传递数组数据

时间:2014-01-21 02:15:45

标签: javascript php jquery arrays

第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); } ); }

我添加数组后代码无效。有人请帮助我..

4 个答案:

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