Javascript 将jQuery样式(.toggleClass)应用于新添加的DOM元素
因此,我正在开发一个有一个小“记事本”小部件的网页,我已经更新了界面,如下所示:Javascript 将jQuery样式(.toggleClass)应用于新添加的DOM元素,javascript,jquery,html,css,dom,Javascript,Jquery,Html,Css,Dom,因此,我正在开发一个有一个小“记事本”小部件的网页,我已经更新了界面,如下所示: 记事本实际上只是一个样式化的,记事本页面上的每一行都是自己的 用户只需单击并键入即可添加新的,因为它是内容可编辑的:true 每个新添加的行都放置在一个元素中,并使用jQuery设置样式 现在是我的jQuery问题。。。下面的代码在双击时成功地将“删除线”类添加到元素中,然后在再次双击时将其删除但是,如果我单击“记事本”添加新的元素,下面的jQuery脚本将无法工作。它仅适用于第一次加载文档时页面上已经存在的元素
,记事本页面上的每一行都是自己的
,因为它是内容可编辑的:true
元素中,并使用jQuery设置样式
元素中,然后在再次双击时将其删除但是,如果我单击“记事本”添加新的
元素,下面的jQuery脚本将无法工作。它仅适用于第一次加载文档时页面上已经存在的
元素
// NOTEPAD INTERFACE
$(".paper p").dblclick( function() {
$(this).toggleClass("strikethrough");
});
有人知道如何使相同的jQuery平等地应用于每个
元素,而不管它是何时添加到DOM的吗?您需要使用.delegate()
。这将使您的函数应用于每个元素,即使是新创建的元素:
$(".paper").delegate('p', 'dblclick', function() {
$(this).toggleClass("strikethrough");
});
在jQuery中搜索事件委派。您必须使用
$('.paper')。在('dblclick',p',function(){…})上使用。@KingKing,成功了!如果你能把它作为一个答案,我将感激地接受它!那么,您的.delegate()
解决方案和@KingKing的.on()
解决方案之间有什么区别呢?一个比另一个更向后兼容,但是如果您不构建不相关的插件。@elersong.on()
是从jquery 1.7开始添加的新内容(并替换delegate
),如果使用jquery 1.7(或更高版本),则可以自由使用它。当然这个答案也是正确的,所以请随意接受,我不会添加我自己的答案。确切地说,这一切都归结为向后兼容性