1

AJAX経由でコンテンツを読み込んでいて、いくつかの機能を追加しようとしています。いくつかのコンテンツを表示/非表示にするこのコードがあります:

$('.list li').hover(
            function() { $('.detail').show(); }, 
            function() { $('.detail').hide(); }
        );

これは最初のロードでは正常に機能しますが、AJAX 経由でさらにコンテンツをロードすると機能しません。それを修正する方法はありますか?

4

2 に答える 2

2

$('.list')現在存在する '.list' アイテムのリストのみを作成します。

まだ存在していない要素にイベント ハンドラーを追加するには、onを使用する必要があります。

あなたはこれを行うことができます :

$('body').on('mousenter', '.list li', function({ $('.detail').show()});
$('body').on('mouseleave', '.list li', function({ $('.detail').hide()});
于 2012-05-29T15:01:21.347 に答える
1

を使用.onすると、イベントを要素にデリゲートできる.listため、新しい要素を追加しliても意図した機能が損なわれることはありません。

$(".list").on("mouseenter mouseleave", "li", function(e){
    $(".detail").toggle( e.type === "mouseenter" );
});

フィドル: http://jsfiddle.net/NGEfj/

.detail要素が 内にありli、ページ内の別の場所にない場合:

$(".list").on("mouseenter mouseleave", "li", function(e){
    $(".detail", this).toggle( e.type === "mouseenter" );
});

フィドル: http://jsfiddle.net/NGEfj/1/

于 2012-05-29T15:12:49.727 に答える