JQueryでイベントバインディングに問題が発生しています。ユーザーが値を変更するかどうかを知りたい多くのインプットがあります。私は彼らのイベントを添付これらの方法:バインド前に実行されたイベントとバインド後に発生したイベント
$(document).on("change", ".myClass", changed);
しかし、時には我々は、これらのフィールドの上に自動変更を実行する必要があり、私はこれらのイベントのバインドを解除、変更を実行し、これらの更新に変更トリガーされることがないようにするために、再びイベントをバインドします。
$(document).off("change", ".myClass");
$(".myClass").val(whatever);
$(document).on("change", ".myClass", changed);
しかし、我々は我々がすることを得る。この最後の工程の後に、これらの入力のいずれかでクリックした場合、それが更新されたとき、フィールドはすべてのイベントを添付していなかった場合でも、変更イベントが発生します。フィールドがフォーカスを失うまで変更イベントは発生しませんが、この動作を理解することはできません。
助けや説明が必要です。
ありがとうございます。
申し訳ありません、私はchange()の代わりに変更を意味しました。
$(document).on("change", ".myClass", changed);
へ
$(document).on("change", ".myClass", changed());
から
関数の*戻り値*ではなく、関数の*参照*を委譲されたイベントハンドラに渡す必要があります: '$(document).on( 'change'、 '.myClass'、changed)'。また、要素の値をプログラムで変更しても、changeイベントは発生しないので、ロジックは問題ではないことにも注意してください。https://jsfiddle.net/2185v3z5/ –
あなたの例では、イベントの提起は私のコードで起こるので、私は私が見たことのない問題があることに気をつけなければならない。あなたの助けに感謝します。 – MKP