jQuery选择器存储对象?如何强迫它不这样做

jQuery selector stores object? How to force it not to?

本文关键字:何强迫 这样做 选择器 存储 对象 jQuery      更新时间:2023-09-26

我有一个下拉列表(<选择>(元素和一个容器。

<div class='container' />
<script>
   var dropdown = "<select class='multi-dropdown'> ... </select>"
</script>

当值更改时,您将获得另一个值。这是合乎逻辑的,这只发生在文档准备就绪(第一个是在那里制作的(,并且当客户端修改最后一个文档时。

$(document).ready( function(){
    $('.container').append(dropdown);
    $('.multi-dropdown:last').change(function(){
          $('.container').append(dropdown);
    }); 
});

对我来说似乎是一个工作代码。但我注意到的是,这不适用于下一个附加的下拉元素。此外,如果我更改原始的,它会触发。

我的理论是,也许jQuery已经将原始对象存储为:last,因此即使我添加新的"last"元素,它也不会再次选择新元素。

新创建的元素(以这种方式(甚至不能用jQuery选择。

请争论赞成或反对,这些只是我的想法。

问题是你新附加的 SELECT 永远不会绑定到它的事件。 仅仅因为您使用类来绑定更改,即使是初始 SELECT,这不会自动应用于 DOM 中的每个新添加元素。

阅读委托事件,例如 on(( 函数。 或者使用类似livequery的东西。

由于在页面启动时将change处理程序绑定到:last元素,因此如果最后一个元素动态更改,则不会相应地更改该元素;请尝试使用on方法进行深度委托。

喜欢:

$(document).ready( function(){
    $('.container').append(dropdown);
    $('body').on('change','.multi-dropdown:last',function(){
        $('.container').append(dropdown);
    }); 
});
相关文章: