0

カスタム イベント オブジェクトを使用して、一部のオブジェクトでイベントをトリガーすることは可能ですか? すなわち

$('#Element1').click(function(event){
    console.log('Element1 clicked', event);
}

$('#Element2').click(function(event)
{ //handle click on one element

  //optionally modify the event object
  event.target=Something;

  //Trigger the event handler(s) on some other element using modified event object
  $('#Element1').click(event);
});

背景のビット:

私のインスタンスでは、Element2 は Element1 のほぼ同一のクローンですが、位置が異なります。Element2 がクリックされると、そのクリックは Element1 に転送されます。

Element2 のどの子がクリックされたかに従って、Element1 の正しい子を識別するコードは既にありますが、要素 1 の子のクリック イベント ハンドラーでは、pageX および pageY プロパティを正しく設定する必要があり、.click() はこれらのプロパティを完全に省略します。

この例では、ターゲット プロパティが正しく設定されていないため、ディープ クローンを実行してイベント ハンドラーを含めるだけでは不十分です。

私のインスタンスでの 1 つの回避策は、複製された要素が元の要素 (およびすべての子) への参照を保持し、ハンドラーがその参照をチェックすることですが、ハンドラーが複製の知識を持たない解決策をお勧めします。プロセス - 特に、変更するハンドラーがたくさんあるためです!

4

2 に答える 2

0

イベントオブジェクトを引数として受け入れる.trigger()で試すことができます

$('#Element1').trigger(event);

デモ:フィドル

于 2013-08-20T15:16:42.290 に答える