<select>数组元素的change事件将通过jQuery填充另一个</select>元素

时间:2010-11-26 12:49:30

标签: jquery arrays

我有2个数组元素。我尝试将change事件绑定到第一个元素,以便select更改甚至会影响第二个元素。 例如:

<select name="item1[]" id="item1[]">
  <option value="0">...</option>
  <option value="1">...</option>
  <option value="3">...</option>
</select>

<select name="item2[]" id="item2[]">
  <option value="0">...</option>
  <option value="1">...</option>
  <option value="3">...</option>
</select>

<select name="item1[]" id="item1[]">
  <option value="0">...</option>
  <option value="1">...</option>
  <option value="3">...</option>
</select>

<select name="item2[]" id="item2[]">
  <option value="0">...</option>
  <option value="1">...</option>
  <option value="3">...</option>
</select>

因此,有更多行,其中item1和item2数组元素等待PHP进程。

当item1选择将更改时,将填充item2。但我的以下jquery函数即使在item1更改事件中也不起作用。我无法理解为什么绑定功能不起作用。我试图使用警报,但没有工作。

<script>
$('#item1[]').each(function(index){
  $(this).bind("change", function(){
    another function call to populate item2
    alert($(this).val()); // not working
  });
});
</script>

请帮忙。

问候。

3 个答案:

答案 0 :(得分:1)

除了注释之外,你还需要转义那些方括号(或者从ID属性中删除它们 - 它们只会使事情变得复杂,而invalid in HTML 4正如@jensgram所指出的那样):

$('#item1\\[\\]')

请参阅http://api.jquery.com/category/selectors/

答案 1 :(得分:1)

同一个id在文档中不应该存在多次,jquery会在找到一个id后立即停止搜索domobject。

此外,[]在ID中无效,请参阅W3C

答案 2 :(得分:0)

不确定你为什么要这么复杂的电话,但是应该这样做:

$('#item1\\[\\]').change(function(){
    alert($(this).val());
});

(假设您只有一个具有该ID的元素)。

[]是属性选择器的元字符:

  

如果您希望使用任何元字符(#;&,.+*~':"!^$[]()=>|/@)作为名称的文字部分,则必须使用两个反斜杠转义该字符:\\。例如,如果您的元素为id="foo.bar",则可以使用选择器$("#foo\\.bar")

顺便说一句,如果你有PHP的方括号,你在ID中不需要它们。它们只在name属性中有意义。