Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何选择通过javascript添加的元素_Javascript_Jquery - Fatal编程技术网

如何选择通过javascript添加的元素

如何选择通过javascript添加的元素,javascript,jquery,Javascript,Jquery,我有一个简单的代码,可以检查选择的更改并提醒消息。这是正常的,但当我插入新的。在页面上选择payment元素时,此方法仅适用于第一个元素,而不适用于通过javascript创建的元素 $(document).ready(function() { return $(".select-payment").on("change", function() { return alert("hello"); }); }); 您知道如何使它适用于加载页面后添加的具有类的任何元素吗?选择pay

我有一个简单的代码,可以检查选择的更改并提醒消息。这是正常的,但当我插入新的
。在页面上选择payment
元素时,此方法仅适用于第一个元素,而不适用于通过javascript创建的元素

$(document).ready(function() {
  return $(".select-payment").on("change", function() {
    return alert("hello");
  });
});
您知道如何使它适用于加载页面后添加的具有
类的任何元素吗?选择payment

$(document).on("change", ".select-payment", function() {
    alert("hello");
});

同样,从更改处理程序中返回几乎没有意义,更不用说返回警报结果了。

您可以使用下面的
事件委派

$(document).on('change', '.select-payment', function () {..
  • 执行上述行时,用DOM中存在的任何closeby容器替换文档
  • 事件委派将事件绑定到父元素,并在
    Event.target
    与指定的选择器匹配时执行处理程序

  • 当以动态创建的元素为目标时,需要使用的委托语法:

     $(document).on("change", ".select-payment", function() {
    
    从文档中:

    事件处理程序仅绑定到当前选定的元素;他们 在代码调用.on()时页上必须存在。 要确保元素存在并且可以选择,请执行事件 在文档就绪处理程序中为 页面上的HTML标记。如果新的HTML被注入到页面中, 选择元素并在创建新HTML后附加事件处理程序 放入页面中


    你为什么要放回执?您必须将事件处理程序附加到文档,而不是现有的
    。请选择“付款”

    试试这个:
    $(document).on(“change”,“.select payment”,function(){…})

    为了获得更好的性能,您可以使用DOM中始终存在的任何更接近的父元素替换文档。像

    $('#closestId').on("change", ".select-payment", function () { 
    
         alert("hello"); 
    }
    );
    
    如果使用$(“document”),jQuery将搜索名为document like的节点/标记,并且不会找到任何内容,因为document实际上是一个对象


    但是您可以使用$(“body”),因为body是DOM的节点/元素。

    您以前检查过这个吗?-另外,通过javascript添加了什么样的元素?当使用“开”来授权listenersKinda时,这一点很重要,因为高代表性用户会跳起来回答网站上最常被问到的问题之一,而不是投票关闭……我以为答案是$(“.select payment”).live(“change”,function),但所有聪明人似乎都同意$(document)。on。区别是什么?@Matt
    .live()
    早就被弃用,甚至从最新版本中删除。
    $('#closestId').on("change", ".select-payment", function () { 
    
         alert("hello"); 
    }
    );