目标。来自动态dom

时间:2012-11-08 17:46:04

标签: jquery

我想使用.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;
    });
});
谢谢Sushanth 继承我的小提琴:http://jsfiddle.net/nalagg/rN9tJ/1/

1 个答案:

答案 0 :(得分: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;
 });