【问题标题】:jquery class action not called, if set div data got from a POST未调用 jquery 类操作,如果设置 div 数据来自 POST
【发布时间】:2012-08-22 16:31:30
【问题描述】:

我正在发布并获取数据以设置为 text_div:

<div id="text_div">
    {{file.text|safe}}
</div>

$.ajax({
    ...
    success: function(data){
        $("#text_div").html(data);
    }
});

text_div 有如下段落:

<p>xxx <a title="FOO" class="bar" href="#">foo</a> xxx xxx. </p>

后面的数据可以是html,但是不能调用links action。

$("a.bar").click(function(){
    alert('xxx');
});

奇怪的是,如果我使用链接模式设置堆栈段落,则可以调用类操作。我通过 chrome 工具检查元素,静态段落与从 POST 请求获得的数据相同。

【问题讨论】:

    标签: jquery class http-post


    【解决方案1】:
    $("a.bar").click(function(){
        alert('xxx');
    });
    

    无法正常工作,因为您是动态插入的。您需要使用.on() 函数绑定点击事件,例如:

    $("#text_div").on('click', 'a.bar', function(){
        alert('xxx');
    });
    

    【讨论】:

    • 它有效!但是为什么 $("a.bar").on('click', function(){...} 不起作用?
    • 因为.on() 需要绑定到加载DOM 时存在的元素。来自文档: 事件处理程序仅绑定到当前选定的元素;当您的代码调用 .on() 时,它们必须存在于页面上。为确保元素存在并且可以被选择,请在页面 HTML 标记中的元素的文档就绪处理程序内执行事件绑定。如果将新 HTML 注入页面,请在将新 HTML 放入页面后选择元素并附加事件处理程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2019-12-13
    相关资源
    最近更新 更多