我有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>
请帮忙。
问候。
答案 0 :(得分:1)
除了注释之外,你还需要转义那些方括号(或者从ID属性中删除它们 - 它们只会使事情变得复杂,而invalid in HTML 4正如@jensgram所指出的那样):
$('#item1\\[\\]')
答案 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
属性中有意义。