Javascript jQuery将操作应用于正在注入的元素

Javascript jQuery将操作应用于正在注入的元素,javascript,jquery,html,Javascript,Jquery,Html,我有一些页面的元素在页面加载后被库注入。这些元素有onClick操作,由jQuery控制。由于这些项目是在页面加载后呈现的,jQuery在针对这些项应用onClick操作时会出现问题吗?这是使用委托事件的典型情况,在这种情况下,您将处理程序绑定到父元素,并将特定选择器作为参数传递,并且jQuery仅当匹配的选择器是触发事件的选择器时才会触发处理程序 阅读有关jQuery文档的更多信息,请参见直接和委托事件 事件-一个或多个空格分隔的事件类型和可选 名称空间,例如“click”或“keydown.

我有一些页面的元素在页面加载后被库注入。这些元素有onClick操作,由jQuery控制。由于这些项目是在页面加载后呈现的,jQuery在针对这些项应用onClick操作时会出现问题吗?

这是使用委托事件的典型情况,在这种情况下,您将处理程序绑定到父元素,并将特定选择器作为参数传递,并且jQuery仅当匹配的选择器是触发事件的选择器时才会触发处理程序

阅读有关jQuery文档的更多信息,请参见直接和委托事件

事件
-一个或多个空格分隔的事件类型和可选 名称空间,例如“click”或“keydown.myPlugin”

selector
一个选择器字符串,用于筛选所选对象的后代 触发事件的元素。如果选择器为空或省略, 事件始终在到达选定元素时触发

数据
事件发生时在event.data中传递给处理程序的数据 触发

handler(eventObject)
事件发生时要执行的函数 触发。值false也可以作为 只返回false的函数

上面的目标是以后可以添加到DOM中的动态元素

注意:

  • 对于委托事件,您应该始终将其绑定到绑定处理程序时可用的最接近的静态容器。更多信息:

  • 但是,最好是直接绑定到元素,这可以通过在元素插入DOM后绑定处理程序来实现

  • 使用以下表格:

    $("#myid").on("click",".myTargetElement", function(){
    // do my click stuff here
    });
    
    标记示例:

    <div id="myid">
       <div class="myTargetElement">Click Me</div>
       <div class="myTargetElement">Click Me</div>
    </div>
    
    示例:克隆上面标记中的第一个元素,并在单击时使其变为蓝色:

    $("#myid").on("click",".myTargetElement", function(){
        $(this).css('color','blue');
    });
    
    $('.myTargetElement').eq(0).clone().text("New").appendTo('#myid');
    

    它可以,您可以“重新绑定”,如果可以的话,元素可以使用.on()/live()单击,具体取决于您使用的jQuery版本。@limelights jQuery 1.7.2
    on()
    工作得很好:)带“注意”的回答很好-特别是绑定到离目标最近的元素,这样它就不会绑定到文档。@Markschultheis是真的,并用讨论sameOne问题的链接更新了答案。。。
    on()
    能够同时针对最初加载的元素和后来注入DOM的元素吗?@icu222是的,但正如我在第二篇笔记中提到的那样。。当元素可用时,最好直接将其绑定到该元素。对不起,由于某种原因,我的眼睛跳过了这一行。我只是想知道,这样我就不必写两次重复的代码了,因为我不知道我的客户机是否会先加载一些元素,然后再注入其余的元素。谢谢你帮我澄清:)一个问题。。。
    on()
    是否能够以最初加载的元素和后来注入DOM的元素为目标?@ICU222非常-是的,非常重要-它绑定到父元素(或文档)然后从那里“找到”目标元素-因此它们需要“在”中需要在绑定时存在的父元素—当它最初运行时。我添加了一个示例,以便您可以在需要时看到它的运行。
    $(".myTargetElement").on("click", function(){
    // do my click stuff here
    });
    
    $("#myid").on("click",".myTargetElement", function(){
        $(this).css('color','blue');
    });
    
    $('.myTargetElement').eq(0).clone().text("New").appendTo('#myid');