Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 每个都来自动态dom_Jquery - Fatal编程技术网

Jquery 每个都来自动态dom

Jquery 每个都来自动态dom,jquery,Jquery,我有一些动态DOM元素希望使用作为目标。每个 当我用延迟加载元素时,。每个似乎都没有接收到这一点 我怎样才能做到这一点 setTimeout(function(){ $('body').append('<div id="nav">'+ '<ul>'+ '<li><a>button 1</a></li>'+ '<li><a>but

我有一些动态DOM元素希望使用
作为目标。每个

当我用延迟加载元素时,
。每个
似乎都没有接收到这一点
我怎样才能做到这一点

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