1

addEventListener私は、影響を受けない場所で 追加されたイベントハンドラーを認識しました$.trigger。その質問の特別な理由は、外部ライブラリ (純粋な js のみ) を使用せずにいくつかのロジックを実装するいくつかの自己作成の html 要素があることです。現在、メイン プロジェクトでこれらのコントロールを使用したいと考えており、さらに jQuery などの外部ライブラリがあります。たとえば、変更イベントをトリガーしたい (思い出してください... イベントは で追加されますelement.addEventListener("event", function)) with $(element).trigger("change").

結果:何も起こらなかった

次のようなコードを使用すると、イベントのみがトリガーされます。

event = document.createEvent("HTMLEvents");
event.initEvent("change", true, true);
event.eventName = 'change';
element.dispatchEvent(event);

反対側では...jQueryで追加されたイベントハンドラーも、カスタム作成されたイベントによってトリガーされます。

魔法の質問: なぜ??

次の jsfiddle に小さな例があります。http://jsfiddle.net/UYyXv/3/

4

2 に答える 2

1

jquery forums から説明を受けました。

jQuery イベントは、ネイティブ イベントよりも高いレベルです。トリガーは jQuery イベントを偽造します。ネイティブイベントを偽造したい場合は、質問に書いたように呼び出す必要があります。

簡単な答えは、ネイティブ イベントを使用しないことです。

JΛ̊KE

于 2013-01-11T08:37:17.003 に答える
0

試してみませんか

$(SELECTOR).change(function(e){
    e.preventDefault();
    //***DO STUFF HERE***
})
于 2013-01-09T09:58:54.817 に答える