-1

.each
我有一些动态 DOM 元素,当我延迟加载元素时,我想使用这些元素,但.each似乎并没有发现它。
我怎样才能使这项工作?

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;
    });
});

谢谢苏珊斯继承我的小提琴:http: //jsfiddle.net/nalagg/rN9tJ/1/

4

1 回答 1

0

看起来就像the #nav is not a static parent在关联点击事件时它仍然没有插入到 DOM 中。

所以attach it to a higher static parent

另外,您首先不需要循环..

将活动委托body

$('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;
 });
于 2012-11-08T17:48:54.817 回答