我在 $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 中应该高于目标元素的节点完成。