次のように $document.ready() で mouseenter および mouseleave イベントをバインドします。
$( ".collection_add_to" ).hover(
function() { $(this).find( ".playlists" ).fadeIn("fast"); },
function() { $(this).find( ".playlists" ).fadeOut("fast"); }
);
ユーザーは、クラス「.collection_add_to」を持つ検索結果をさらにリクエストできます。これらは、次のように既存の検索結果に追加されます。
$.get("context/collection/", $data, function(result) {
$( result ).appendTo( "#collection_song_items" );
// rebind_hover();
});
返された結果にクラス「.collection_add_to」があることを再確認しました。私はまた、余分なルーチンでこれを再バインドしようとしました:
function rebind_hover() {
$( ".collection_add_to" ).hover(
function() { $(this).find( ".playlists" ).fadeIn("fast"); },
function() { $(this).find( ".playlists" ).fadeOut("fast"); }
);
}
ホバーイベントは、新しく追加されたアイテムで機能しなくなりました。$load() 関数を使用すると、機能します。特にコンテンツが append() または appendTo() で追加された場合、動的にロードされたコンテンツでホバーイベントを再び機能させるにはどうすればよいですか?
編集
irc と Raminson の sacho に感謝します。
$(document).on("mouseenter", ".collection_add_to", function() {
console.log("MOUSEENTER");
});
$(document).on("mouseleave", ".collection_add_to", function() {
console.log("MOUSELEAVE");
});
DOM 内でターゲット要素よりも高い位置にあるノードからイベント委任を行う必要があることは、私には明確ではありませんでした。