答案 0 :(得分:8)
快捷方式事件处理程序(例如click()
,mouseover()
等)仅适用于页面加载时DOM可用的元素。动态追加元素时,您必须将事件附加到静态父元素,并提供您希望委托事件的过滤器,如下所示:
$("body").on('mouseover', '.hoverme', function() {
$(this).css({backgroundColor: '#000'});
});
$("body").on('mouseout', '.hoverme', function() {
$(this).css({backgroundColor: '#0af'});
});
请注意,我在这里使用body
作为主要选择器。理想情况下,您应该使用最接近的.hoverme
元素的包含元素,该元素不会动态附加到DOM。
此外,您可以使用hover()
:
$("body").on('hover', '.hoverme', function(e) {
if (e.type === 'mouseenter')
$(this).css({backgroundColor: '#000'});
else
$(this).css({backgroundColor: '#0af'});
});
答案 1 :(得分:1)
您是否尝试过使用.on()?或旧版本的jQuery 1.7中的.bind()? -
<强>。对()强>
描述:为一个或多个事件附加事件处理函数 选定的元素。 http://api.jquery.com/on/
.bind()
说明:将处理程序附加到元素的事件。
答案 2 :(得分:0)
或使用live()。这适用于jquery 1.4+,它在1.7中已弃用但仍然有效
$(".hoverme").live('mouseover', function()
{
$(this).css({backgroundColor: '#000'});
});
$(".hoverme").live('mouseout', function()
{
$(this).css({backgroundColor: '#0af'});
});