jQuery是否适用于未来事件

时间:2014-08-28 11:16:50

标签: jquery ajax

日,我们曾经使用jQuery' .live()http://api.jquery.com/live/)来绑定未来事件,如果内容是通过AJAX重新加载的,示例

由于.live()现已弃用(并已删除),因此jQuery建议使用.on()http://api.jquery.com/on/)。他们没有声明它适用于未来的事件。 顺便提一下,它没有处理通过AJAX重新加载的元素。

我的问题; .on().live()执行/过去的方式,.on()是否正常工作,或者是否适用于未来事件?

我按如下方式致电$j('#header-cart').on('click', '.skip-link-close', function(e) { ... // change the world });

{{1}}

感谢。

3 个答案:

答案 0 :(得分:2)

当您使用.on()

替换时,您需要以不同的方式附加活动.live()

直播

$('#ele_id').live('click', function() { 
  // event code
});

开启:

$(document).on('click', '#ele_id', function() { 
  //  event code
});

答案 1 :(得分:1)

我觉得你以错误的方式打电话给$.on!是的,它是.live()的替代品,非常棒。

#static-div内有一个静态元素:.dynamic-link和动态内容,例如<div>。您需要以这种方式致电.on()

$("#static-div").on("click", ".dynamic-link", function(e){
   e.preventDefault();
});

或者,如果你不确定,你可以这样做:

$(document).on("click", ".dynamic-link", function(e){
   e.preventDefault();
});

答案 2 :(得分:1)

是的,它以非常类似的方式工作,不同之处在于您不将事件绑定到 future 元素,而是绑定到底层静态元素。 .on使用事件传播/冒泡。

作为一个例子

<div class="static-element">
    <div>
        <!-- Content inserted from ajax call below -->
        <p class="volatile-element">Example content</p>
    </div>
</div>

.on绑定到静态元素并定位volatile元素。

$(".static-element").on("click", ".volatile-element", function(event) { ... });