Jquery 每个都来自动态dom
我有一些动态DOM元素希望使用Jquery 每个都来自动态dom,jquery,Jquery,我有一些动态DOM元素希望使用作为目标。每个 当我用延迟加载元素时,。每个似乎都没有接收到这一点 我怎样才能做到这一点 setTimeout(function(){ $('body').append('<div id="nav">'+ '<ul>'+ '<li><a>button 1</a></li>'+ '<li><a>but
作为目标。每个
当我用延迟加载元素时,。每个
似乎都没有接收到这一点
我怎样才能做到这一点
setTimeout(function(){
$('body').append('<div id="nav">'+
'<ul>'+
'<li><a>button 1</a></li>'+
'<li><a>button 2</a></li>'+
'<li><a>button 3</a></li>'+
'</ul>'+
'</div>');
}, 1000);
$("#nav ul li").each(function (index) {
$(this).delegate('a', 'click', function(){
alert(index); //NOTHING HAPPENS
return false;
});
});
setTimeout(函数(){
$('body')。附加('+
“”+
“- 看起来像是
导航不是一个静态父对象,因为在关联单击事件时,它仍然没有插入到DOM中
因此将其附加到更高的静态父级
而且,您首先不需要循环
将事件委托给主体
$('body').delegate('#nav ul li a', 'click', function(){
alert(index);
return false;
});
此外,最新版本中不推荐使用.delegate()。。
改为使用.on()
$('body').on('click', '#nav ul li a', function(){
alert(index);
return false;
});
谢谢,一般来说,delegate
到body
是一种好的做法吗?我的示例只是为了演示,但在现实世界中,动态dom可能来自一个按钮单击而不是延迟。我正在委托给body,因为我不知道这种情况下的HTML结构。静态父对象越近越好…所以如果如果容器比主体更靠近,那么最好附加到该元素我明白了,同样从您的示例中,您说过不要循环,但我如何获取索引?您可以只执行$(this).index()oops..您需要执行警报($('a').index(this))