-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

0

要素が動的に生成される場合、これには 2 つの回避策があります。

最初: jQuery live 関数を使用する [非推奨]、代わりに jQuery on を使用する

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

2 番目: 要素の作成時に、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 に答える