-1

基本上,当尝试使用eachjQuery 中的函数时,我遇到了一个我似乎无法解决的问题,

这是我尝试使用的 jQuery 代码:

$('#status_update').each(function(index) {
        alert(this);
        $(this).on('change', function (e) {
            alert('changed');
        });
});

这是我正在使用的HTML代码:

<select name='status_update[]' class='input input-medium' id='status_update' data-id='1'>
    <option value='0' selected>Not Admitted</option>
    <option value='1'>Admitted</option>
</select>

<select name='status_update[]' class='input input-medium' id='status_update' data-id='1'>
    <option value='0' selected>Not Admitted</option>
    <option value='1'>Admitted</option>
</select>
<select name='status_update[]' class='input input-medium' id='status_update' data-id='1'>
    <option value='0' selected>Not Admitted</option>
    <option value='1'>Admitted</option>
</select>

etc....

它适用于第一个,但之后它不会激活on.change()jQuery 中的 ,导致它无法处理。

4

5 回答 5

6

id 在文档中应该是唯一的,您有多个具有相同 id 的元素。

您可以为所有元素使用一个公共类,并使用类选择器而不是 id 选择器

$('.status_update').each(function(index) {
        alert(this);
        $(this).on('change', function (e) {
            alert('changed');
        });
});
于 2013-07-12T12:08:13.933 回答
1

ID 应仅应用于单个元素。尝试使用 .input-medium 作为您的 jquery 选择器,即:

$('.input-medium').each(function(index) {
    alert(this);
    $(this).on('change', function (e) {
        alert('changed');
    });
});
于 2013-07-12T12:09:31.453 回答
0

您不能为多个元素分配相同的 id,因此最好删除 id 并使用 class

于 2013-07-12T12:11:07.210 回答
0

如果元素是动态生成的,有两种解决方法:

第一:使用 jQuery live function [deprecated],使用 jQuery on 代替

http://api.jquery.com/on/

第二:在创建元素时,添加 onchange 。例子:

val jQel = $("<select name='status_update[]' class='input input-medium' data-id='1'>
    <option value='0' selected>Not Admitted</option>
    <option value='1'>Admitted</option>
</select>");
$(jQel).find(".input").change(function(){
 //add code here
});
//then your append code somewhere
于 2013-07-12T12:23:20.663 回答
-2

尝试这个

$('input[id="status_update"]').each(function(index) {
        alert(this);
        $(this).on('change', function (e) {
            alert('changed');
        });
});
于 2013-07-12T12:08:07.497 回答