第1页(index.php)
<?php for($i=0;$i<2;$i++) { ?>
<select id="name[<?php echo $i;?>]">
<option value="John">John</option>
<option value="Alice">Alice</option>
</select>
<input type="text" id="name-id">
<input type="text" id="location">
<?php } ?>
</table>
<script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script src="js/function.js"></script>
第2页(function.js)
for (i=0;i<2;i++){
$('select#name['+i+']').on('change',function()
{ alert(1); } ); }
我添加数组后代码无效。有人请帮助我..
答案 0 :(得分:1)
您必须转义ID中的[]
,而是这样做,您最好不要在ID中引入[]
,[]
应该在name
中使用常用的属性。
HTML:
<select id="name_<?php echo $i;?>" name="name[]">
JS:
$('select#name_'+i).on('change',function() { //...
或者您可以添加一个类并使用类选择器而不是id选择器。
答案 1 :(得分:0)
您需要转义ID
中的[]
for (var i = 0; i < 2; i++) {
$('#name\\[' + i + '\\]').on('change', function () {
alert(1);
});
}
因为id在页面中应该是唯一的,所以不需要元素选择器select
但我建议添加一个类来选择相似的select元素,而不是使用id
<select id="name[<?php echo $i;?>]" class="name">
<option value="John">John</option>
<option value="Alice">Alice</option>
</select>
然后
$('select.name').on('change', function () {
alert(1);
});
答案 2 :(得分:0)
您需要在前面[
和]
与\\
一起逃离。
$('#name\\[' + i + '\\]').on('change', function () {
alert(1);
});
答案 3 :(得分:0)
我认为让标识符看起来像一个数组是一个坏主意。 也许你可以使用'data'属性?
我编辑了一些代码:
<强> HTML 强>
<?php for($i=0;$i<2;$i++) { ?>
<select id="name" data-index="[<?php echo $i;?>]">
<option value="John">John</option>
<option value="Alice">Alice</option>
</select>
<input type="text" id="name-id">
<input type="text" id="location">
<?php } ?>
<强> JS 强>
$('body').on('change',"select#name", function () {
alert($(this).data("index"));
});