我有一个下拉列表(<选择>(元素和一个容器。选择>
<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);
});
});