Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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 稍后添加id为的元素时方法行为的jquery_Javascript_Jquery_Migration_Live - Fatal编程技术网

Javascript 稍后添加id为的元素时方法行为的jquery

Javascript 稍后添加id为的元素时方法行为的jquery,javascript,jquery,migration,live,Javascript,Jquery,Migration,Live,以下是示例片段: $("#addedLater").on("click", function(){ // code }); 假设将来将添加id为“addedLater”的div 由于执行上述行时元素不存在,jquery会直接将事件附加到文档吗 我已经读到,在用jQuery附加事件时,使用id将是有效的。所以我想用 $("addedLater").on("click" function(){ // code }); 而不是 $("#parent").on("click", ".ad

以下是示例片段:

$("#addedLater").on("click", function(){
    // code
});
假设将来将添加id为“addedLater”的div

由于执行上述行时元素不存在,jquery会直接将事件附加到文档吗

我已经读到,在用jQuery附加事件时,使用id将是有效的。所以我想用

$("addedLater").on("click" function(){
  // code
});
而不是

$("#parent").on("click", ".addedLaterClass", function(){
   // code
});

我无法理解上的
方法在这里是如何工作的?在
方法上调用
的最佳方式是什么?

没有办法直接在尚不存在的元素上侦听事件。在(/*…*/)
上调用
$(mySelector).时,jQuery将查找与mySelector匹配的所有当前存在的元素,并将侦听器附加到这些元素上。这并不是创建一个规则,所有匹配mySelector的元素都将附加该侦听器


您可以等待调用
$(“#addedLater”)。在(“单击”,function(){/*…*/})
直到添加#addedLater之后,或者您可以通过监听未来元素的父元素来使用事件委派,如您在问题中所示(例如,
$(“#父元素”)。在(“单击”、“.addedLaterClass”,function(){/*…*/}
);

动态添加元素的最佳方法是使用:

我们都同意,如果我们可以通过以下方式将事件直接附加到元素,而不是使用事件委派,则会更好:

$("#laterElement").on("click", function(e){
   // code
});
但是想一想:在
$()
函数的每次调用中,jQuery都需要为每个选择器配备某种类型的观察者或观察者。从性能上来说,这将是最差的


这是不可能的,因为jQuery将只在与
$(“#laterElement”)
匹配的元素上添加单击事件,而不是在将来添加。

调用后一个,并用于动态创建的元素。@nanndoj感谢您的编辑。非常感谢您的时间。如果我们尝试在“laterElement”时附加事件不存在,那么jquery会将事件附加到文档中吗?如果从头开始编写这种类型的代码,那么我将遵循答案中提到的最佳实践。现在,我正在将jquery 1.4升级到1.11。因此,我试图了解它将在何处中断,解决此问题的最佳方法是什么。使用id选择器作为第二个参数可以吗r使用下面的on方法$(“#parent”)。on(“click”、“#addedLater”、函数(e){//code});1-如果没有与
$()
选择器匹配的元素,jQuery将不会自动附加。2-在第二个参数中使用ID选择器完全可以。
$("#laterElement").on("click", function(e){
   // code
});