Jquery 事件处理程序不';行不通 A $(“li”)。单击(函数(){ console.log(“你好”); }); $(“ul”)。单击(“click”,“li”,function(){ console.log(“你好”); }); $(“ul”)。追加(“B”);

Jquery 事件处理程序不';行不通 A $(“li”)。单击(函数(){ console.log(“你好”); }); $(“ul”)。单击(“click”,“li”,function(){ console.log(“你好”); }); $(“ul”)。追加(“B”);,jquery,Jquery,大家好,, 当我按下“A”键时,控制台中有2个“Hello”-日志,当我按下“B”键时,只有一个来自UL事件处理程序的“Hello” 有人能解释这种行为吗 多谢各位 这是因为您附加的B没有附加onclick事件处理程序,因为当您执行以下操作时,它在DOM中不存在: <ul> <li>A</li> </ul> $("li").click(function(){ console.log("Hello"); }); $("ul").on("c

大家好,, 当我按下“A”键时,控制台中有2个“Hello”-日志,当我按下“B”键时,只有一个来自UL事件处理程序的“Hello”

有人能解释这种行为吗


多谢各位

这是因为您附加的B
  • 没有附加onclick事件处理程序,因为当您执行以下操作时,它在DOM中不存在:

    <ul>
    <li>A</li>
    </ul>
    
    $("li").click(function(){
        console.log("Hello");
    });
    
    $("ul").on("click", "li", function(){
       console.log("Hello");
    });
    
    $("ul").append('<li>B</li>');
    
    您将需要使用如下内容分别向B
    li
    注册onclick事件处理程序(抱歉,这是一个非常糟糕的示例):

    $b=$(“
  • ”) $b.text('b') $b.click(函数(){console.log(“Hello”);}) $(“ul”)。追加($b);
  • 这是因为您附加的B
  • 没有将onclick事件处理程序附加到它,因为当您这样做时,它不存在于DOM中:

    <ul>
    <li>A</li>
    </ul>
    
    $("li").click(function(){
        console.log("Hello");
    });
    
    $("ul").on("click", "li", function(){
       console.log("Hello");
    });
    
    $("ul").append('<li>B</li>');
    
    您将需要使用如下内容分别向B
    li
    注册onclick事件处理程序(抱歉,这是一个非常糟糕的示例):

    $b=$(“
  • ”) $b.text('b') $b.click(函数(){console.log(“Hello”);}) $(“ul”)。追加($b);
  • 在“li”标记上的第一次单击事件处理程序按预期在上运行,因为在创建处理程序时存在。它对B不起作用,因为在创建处理程序时B不存在


    “ul”标记上的第二个click事件处理程序也通过其父级捕捉对的单击。此外,它还能够捕获对B的单击,因为“on”方法能够跟踪您在参数中指定的动态子级。

    在“li”标记上的第一个单击事件处理程序在A上按预期工作,因为在创建处理程序时A就存在。它对B不起作用,因为在创建处理程序时B不存在

    “ul”标记上的第二个click事件处理程序也通过其父级捕捉对的单击。此外,它还能够捕获对B的单击,因为“on”方法能够跟踪您在参数中指定的动态子项。

    的可能重复
    $b = $('<li/>')
    $b.text('B')
    $b.click(function(){ console.log("Hello"); })
    $("ul").append($b);