入力ボックスと選択ボックスのあるフォームがあり、それぞれにclass="myClass"
。次のスクリプトもあります。
$(document).ready(function() {
$(".myClass").change(function() {
alert('bla');
})
});
選択ボックスまたは入力ボックスを変更するたびに、この関数が2回呼び出される理由がわかりません。ここで何が問題なのですか?
あなたの助けに感謝!
私が考えることができるのは、フォーム自体で同じクラスを使用したことだけです。その場合は、フォームタグからmyClassスタイルを削除します。
修正済み: http://jsfiddle.net/rY6Gq/1/
二重アラートのある障害: http://jsfiddle.net/rY6Gq/
e.stopImmediatePropagation();私のために働いたものです。
$(document).ready(function() {
$(".myClass").change(function(e) {
e.stopImmediatePropagation();
alert('bla');
})
});
そのバグ、あなたが追加します
$("#some_id").unbind('change');
変更コールの前
同じクラスまたはバインドしている属性に同じ名前の親または子がある場合にも発生します。明らかに、子を変更すると、親も変更されます(子が変更されます)。それらが同じクラスまたは属性を持っている場合、2回起動する必要があります。たとえば、次の例では、「myClass」にバインドすると、2回呼び出されます。
<div class="myclass">
<select class="myClass"> </select>
</div>
iEでこれが発生した場合、それは私にとってはこのバグである可能性があります: http://bugs.jquery.com/ticket/659
jQuery 1.7.1への更新はうまくいきました。
そうではありません: http://jsfiddle.net/nfcAS/
私のために働いた唯一のものは、変更チェックの前にバインドを解除しました。
$(".select2Component").unbind();
$(".select2Component").change(function() {
//code
});