jQuery选择器存储对象?如何强迫它不要?

时间:2013-10-08 19:55:51

标签: javascript jquery html dom

我有一个下拉列表(< 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甚至无法选择新创建的元素(这种方式)。

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

2 个答案:

答案 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);
    }); 
});