我有一个下拉列表(< 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甚至无法选择新创建的元素(这种方式)。
请赞成或反对,这些只是我的想法。
答案 0 :(得分:2)
问题是你是新添加的SELECT,它不会得到绑定到它的事件。仅仅因为您使用该类来绑定更改,即使是初始SELECT,也不会自动应用于每个新添加到DOM的元素。
阅读委托事件,例如on() function。或使用类似livequery的内容。
答案 1 :(得分:1)
因为您在页面启动时将change
处理程序绑定到:last
元素,所以如果最后一个元素动态更改,则不会相应地更改它;尝试使用on
方法深入阅读授权。
像:
$(document).ready( function(){
$('.container').append(dropdown);
$('body').on('change','.multi-dropdown:last',function(){
$('.container').append(dropdown);
});
});