2

シナリオは次のとおりです。

<div style="position: absolute; left: 10px; top: 10px; width:50%; height: 50%; border: 1px solid #000000" onclick="alert(0)">
    <textarea style="position: absolute; left: 10px; top: 10px; width:50%; height: 50%; border: 1px solid #FF0000" ondblclick="alert(1)"></textarea>
</div>

主な問題は、textareaのondblclickイベントがトリガーされないことです。

テキストエリアをダブルクリックしようとすると、divonclickがトリガーされます。textareaでカバーされていないdivの領域をクリックした場合にのみ、divのonclickが発生するようにします。どうすればそれを達成できますか?

前もって感謝します!

4

3 に答える 3

1

イベントの委任を読み、目立たないようにハンドラーを追加してみてください

基本的に、要素にワンクリックまたはdblclickハンドラーを割り当てることができますdiv。そのハンドラー内で、元の要素を判別し、必要なアクションを実行できます。リンクはそれについてのさらなる情報をあなたに提供するはずです。

基本的な例を編集します(jqueryと1つのハンドラー関数を使用)

于 2012-05-21T13:42:52.377 に答える
0

タイマーを使用してインテントを検出できます。

クリックが発生したときにタイマーを設定します。このタイマーは、後続のクリックが発生しなかった場合に実行されます。

ダブルクリックでタイマーをクリアし、デフォルトのダブルクリック機能を実行します。

以下のように、

var dblClickIntentTimer = null;

elem.click(function(){
   dblClickIntentTimer = setTimeout(function() {
      //Wait for 100 ms and then execute 'click' functionality here
   }, 100);
});


elem.dblclick(function(){
   clearTimeout(dblClickIntentTimer);

   //Do double-click functionality here  

});
于 2012-05-21T14:14:02.467 に答える
0

イベントをキャンセルするだけです。従来のイベントアタッチの場合はreturn false;、最後に配置する必要がありますが、イベントリスナーをアタッチするには、より新しい方法を使用することをお勧めします(つまり、addEventListenerIE8attachEvent以前の場合)。

于 2012-05-21T13:42:45.663 に答える