在jquery 1.10中使用on函数而不是live
我写了一个代码。我的元素当前不存在。代码是在jquery 1.10中使用on函数而不是live,jquery,Jquery,我写了一个代码。我的元素当前不存在。代码是 jQuery('a.feedSearchClear').on('click',function(evt){ console.log('coming here'); var intId = window.setInterval(function(){ if(jQuery('#feedSortDropDownElement').parent().find('ul').find('a').length > 0) { window
jQuery('a.feedSearchClear').on('click',function(evt){
console.log('coming here');
var intId = window.setInterval(function(){
if(jQuery('#feedSortDropDownElement').parent().find('ul').find('a').length > 0)
{ window.clearInterval(intId);
jQuery(".feedSortMenuContainer").prepend(menu_html);
reRenderMenu();
}
},1000);
});
当我点击按钮时,它就会出现。它未显示控制台日志意味着未调用方法。有人能解释一下为什么???将事件委托给动态添加元素的父元素或委托给文档
jQuery(document).on('click', 'a.feedSearchClear',function(evt){
console.log('coming here');
var intId = window.setInterval(function(){
if(jQuery('#feedSortDropDownElement').parent().find('ul').find('a').length > 0)
{
window.clearInterval(intId);
jQuery(".feedSortMenuContainer").prepend(menu_html);
reRenderMenu();
}
,1000);
});
委派事件的优点是,它们可以从中处理事件
以后添加到文档中的子元素。通过
选择一个元素,该元素保证在
已附加委派事件处理程序,您可以使用委派事件
避免频繁附加和删除事件处理程序
发生的情况是,您正在将绑定直接应用于选定的元素:
$("a.example").on("click", do_stuff);
在上面,您是说,“jQuery,在页面上找到所有a
标记,并使用example
类,然后应用此单击
绑定”。您案例中的问题是页面上还没有这些元素
您可以通过将绑定放在祖先节点(层次结构上的任何节点)上并让它为您处理事件来修复此问题。最简单的方法是使用body
标记,如下所示:
$("body").on("click", "a.example", do_stuff);
现在,您要说,“jQuery,任何时候在主体
标记中单击类为示例
的标记时,都要执行这些操作”
基本上,您是在告诉body标记代表子节点侦听事件,即使该子节点当时不存在。阅读此内容。此问题似乎脱离主题,因为官方文档已经回答了它。啊,正确!我会相应地编辑我的帖子!