2017-06-07 13 views
0

これは私がアイテム欄に値を入力すると、イベントがイベントハンドラは、最初の行の正しい働きjQueryのonChangeイベントハンドラは二回

$(document).on('change', '.item', function() { 
    var ite = $(this).closest('tr'); 
    getdetails(ite); 
})//event 

function getdetails(dat){ 
    var itemName = $(dat).find('.item').val(); 
    alert (itemName);  
}; 

発射することになっているテーブルhttp://jsfiddle.net/djochw6L/1/ です。しかし2列目以降は2回発射される。どうしてこれなの?リターン偽の追加

+1

'$(文書).on( '変更'、 '.item'、機能(E){ \t \t \t e.stopImmediatePropagationの線に沿って何かにあなたのコードを構築することができ

(); 'これを追加 –

+0

新しいtrからアイテムクラスを削除 –

答えて

1

それが二回発射だ理由は、名前のアイテムを持つすべてのクラスのために、あなたの変更上の要素火災です。コードを調べると、すべてのテーブルの列にクラスアイテムを渡した上で、追加された各行にアイテムクラスも渡されていることがわかります。したがって、イベントは2回、1回は行に対して、もう1回はアイテム列に対して発生します。あなたに問題を与えている

コードがないテーブルの行にアイテム・クラスを渡して、代わりのイベントリスナーにハックもののすべての種類を行うことで、あなたの問題を解決する

prot.attr("class", id + " item") 

てみています。あなたは

prot.attr("class", "item-" + id) 
+0

ありがとう!私は他のアイテムクラスに気付かなかった。 –

0

試してみてください。

$(document).on('change', '.item', function() { 
    var ite = $(this).closest('tr'); 
    getdetails(ite); 
    return false; 
}) //event