-1

動的 DOM 要素がいくつか.each
ありますが、要素が遅延してロードされたときに使用してターゲットにしたいのですが、.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 ありがとうございます

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 に答える