jQuery替换现场直播



可能的重复:
jQuery:在VS Live

我的代码使用$('thing').live("mousemove", function(e) {$('thing').live({mouseenter:function(e) {可以正常工作。我注意到jQuery说live被折旧并使用on,所以我做到了。但是,它似乎并没有像我期望的那样奏效。我有Mousemove事件,但是由于对象被动态加载,因此事件无触发,这就是我使用Live的原因。现在,现场正常工作,但是当我使用 on时,正如jQuery所建议的那样,它的作用似乎是.mousemove等。它在执行代码而不是动态添加的事件时(我使用live的全部原因)时,它可用于存在的对象。

有没有办法告诉像现场直播并在新对象上添加事件?还是我使用现场?

您需要委托您的事件如果您想为动态添加元素工作

$(anyStaticParent).on("mousemove", "thing", function() {
     // You code Here
});

任何staticparent 可以是thing的任何父容器。更通用,您可以随时将其设置为body

我也看到 'thing'不是特定元素。

使用'.thing'-如果类

'#thing'-如果ID

您只需要以正确的方式致电.on$(document).on(event, selector, handler)

// Use an element that exist, like document or "body".
$(document).on("mousemove", "thing", function() {
  // Do something here...
});

检查jQuery文档中的最后三个示例。

您必须实现 on的小小一点,因此它的行为与 live一样,将其与选择器绑定到文档作为参数:

$(document).on("mousemove", 'thing', function(e) { ... });

.on委派的方法是在选择器中传递动态添加的元素。

$('thing').on('mousemove', 'dynamically added thing', function(e) {
    //handler
});

对于一个不抽象的示例:

$("ul#menu").on("click", "li", function(event){
    //handler
});

根据API,http://api.jquery.com/on/:

.on( events [, selector] [, data], handler(eventObject) )
.on( events-map [, selector] [, data] )

如果省略了selector或为null,则事件处理程序称为直接或直接限制。每次事件发生在选定元素上时,无论是直接发生在元素上还是从后代(内部)元素发生气泡时,都会调用处理程序。

提供了selector时,事件处理程序称为委派。当事件直接出现在绑定元素上时,而是针对匹配选择器的后代(内部元素)时,没有调用处理程序。jQuery将事件从事件目标燃烧到连接处理程序的元素(即,最内向至最外面的元素),并运行沿该路径匹配选择器的任何元素的处理程序。

最新更新