jQuery动态选择增加与事件失败的快速解决方案

最近的项目,使用的jquery1.6.2库,当动态增加DIV和选择,事件不工作。

找到了一些信息来查找绑定事件:将一个或多个事件处理程序添加到匹配的元素中。还有活动事件:将一个或多个事件处理器添加到当前或将来的匹配元素中。

信息如下:

{绑定和生存}之间的区别

活的方法结合的变体,与绑定方法的功能,其基本功能是相同的,是一个结合事件的一个元素,但绑定方法只能给当前元素绑定事件,对js的新一代后无效的元素,而生活方式是由绑定的方法缺陷,它可以产生元素也可以结合相应的事件,那么这一特点的生活方法并实施接下来讨论其实现的原则。

活方法可以将事件绑定到后续生成元素的原因归因于事件委托。所谓的事件委托意味着绑定到祖先元素的事件可以在它们的后代上使用。活方法的处理机制是将事件绑定到DOM树的根节点,而不是直接绑定到元素。

举例说明:




$(。clickme)。活(单击

$()。追加(测试活方法);


当我们点击这个新元素时,以下步骤依次发生:

(1)生成一个单击事件,该事件被传递到div进行处理。

(2)事件直接绑定到div因为没有事件,那么事件直接冒泡到DOM树

(3)事件向DOM树的根节点冒泡,默认情况下单击事件绑定到根节点。

(4)执行按需绑定的单击事件

(5)检查绑定事件的对象是否存在,以确定是否需要继续绑定事件。

无论是$(事件。目标)。最近('。clickme)可以找到匹配的元素。

(6)通过(5)测试,如果绑定事件的对象存在,则执行绑定事件。

因为只有当事件发生时,现场的方法将检测是否结合事件的对象存在,所以活的方法可以实现后续元素实现事件绑定。相反,绑定将决定是否在事件的结合相结合的事件存在的元素,而只有结合,而结合父节点的当前元素。

根据上面的分析,生活的好处是非常大的,那么为什么要使用绑定方法呢jQuery之所以保留绑定方法,而不是使用Live方法来替换绑定,也是因为在某些情况下Live不能完全替换绑定:

(1)绑定方法可以绑定任何Javascript事件,而生活方式只支持单击、双击、KeyDown,按键、Keyup、MouseDown、MouseMove、Keyup、MouseDown和MouseMove在jquery1.3在jquery1.3。

事件(映射到更合适,可以泡聚集和focusout)。此外,在jQuery 1.4.1,它还可以支持悬停(映射到MouseEnter MouseLeave )。

(2)Live()不能完全支持通过DOM遍历方法发现的元素,而应该直接在选择器后面使用Live()方法。

(3)当元素使用Live绑定事件时,如果要防止事件通过或冒泡,则需要在函数中调用返回false。里面是不是能够防止事件传递或冒泡。

此外,在使用Live时,最好用类指定。

例如:




idv0 = $(var $ ); / /我是动态的
select0 = $(var $ <选择ID = 'seltreenode+我+' = 'nodetab多=多
style= 'width:200px;身高:225;>);
div0.append美元(美元select0);


按以下方法使用以下方法:


$(。divtab_down。nodtab)。活(‘变',函数(){(){)

})

$(。divtab_down)。儿童(选择)。生活。(‘变',功能()){

})这种方式不起作用。




备注:uff1a
在jquery1.7.1或更早的版本,你需要使用绑定或取消绑定(传统的结合),活/死(预绑定),以及后来的版本上的/而非绑定,生活,等等。

以上是关于jQuery选择动态增加,和无效的事件的解决方案是:萧边分享你的全部内容。我希望能给你一个参考,希望你能支持它。