Jquery 新添加的div不';t继承文档中的事件处理程序就绪
如果在运行时附加新的div,则新创建的div不会与documentready中的事件处理程序连接 比如说, 如何将新div分配给document ready中的当前事件处理程序?您尝试过使用.on()了吗?或者jQuery 1.7-的旧版本中的.bind() .on() 说明:为一个或多个事件附加事件处理程序函数 添加到选定的元素。 .bind() 说明:将处理程序附加到元素的事件Jquery 新添加的div不';t继承文档中的事件处理程序就绪,jquery,Jquery,如果在运行时附加新的div,则新创建的div不会与documentready中的事件处理程序连接 比如说, 如何将新div分配给document ready中的当前事件处理程序?您尝试过使用.on()了吗?或者jQuery 1.7-的旧版本中的.bind() .on() 说明:为一个或多个事件附加事件处理程序函数 添加到选定的元素。 .bind() 说明:将处理程序附加到元素的事件 快捷方式事件处理程序(如click(),mouseover()等)将仅应用于页面加载时DOM可用的元素。动态附
快捷方式事件处理程序(如
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()
稍微整理代码:
或使用live()。这适用于jQuery1.4+,在1.7中已被弃用,但仍然有效
$(".hoverme").live('mouseover', function()
{
$(this).css({backgroundColor: '#000'});
});
$(".hoverme").live('mouseout', function()
{
$(this).css({backgroundColor: '#0af'});
});
可能的副本。您需要使用
on()
(以前是live()
或delegate()
)来处理在动态元素上触发的事件。必须使用on(1.7)或live eventsthx。它也可以工作,但是使用不推荐的事件处理程序有什么缺点吗?是的-如果将来升级到jQuery的更新版本,它可能无法工作delegate()
是live()
的更好的替代品,尽管在jQuery 1.7中,on()
也已经取代了它。如果您使用某种CMS平台,您不能在不破坏其他功能的情况下升级jQuery,并且必须坚持使用较旧的jQuery版本,那么这是很好的选择
$(".hoverme").live('mouseover', function()
{
$(this).css({backgroundColor: '#000'});
});
$(".hoverme").live('mouseout', function()
{
$(this).css({backgroundColor: '#0af'});
});