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问题。。。下面的代码在双击时成功地将“删除线”类添加到
    元素中,然后在再次双击时将其删除但是,如果我单击“记事本”添加新的
    元素,下面的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(或更高版本),则可以自由使用它。当然这个答案也是正确的,所以请随意接受,我不会添加我自己的答案。确切地说,这一切都归结为向后兼容性