0

我有一个下拉 ( < select > ) 元素和一个容器。

<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 选择。

请支持或反对,这些只是我的想法。

4

2 回答 2

2

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

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

于 2013-10-08T20:00:33.613 回答
1

因为您在页面启动时将change处理程序绑定到:last元素,所以如果最后一个元素动态更改,则不会相应更改;on尝试使用方法深入阅读委托。

像:

$(document).ready( function(){
    $('.container').append(dropdown);
    $('body').on('change','.multi-dropdown:last',function(){
        $('.container').append(dropdown);
    }); 
});
于 2013-10-08T20:05:46.683 回答