を表示し、この画像以外のページの他の部分をクリックして
を非表示にします。 。 。"/> を表示し、この画像以外のページの他の部分をクリックして
を非表示にします。 。 。">

ホームページ  >  記事  >  ウェブフロントエンド  >  jQueryイベントにおけるonclickとmousedownの間の競合の解決策

jQueryイベントにおけるonclickとmousedownの間の競合の解決策

黄舟
黄舟オリジナル
2017-06-28 09:25:542471ブラウズ

onclickがマウスダウンと競合する場合はどうすればよいですか? ? ?

$(function() {
            $(document).mousedown(function(event) {
                if (event.target.id == 'color') {
                    document.getElementById("x-palette-panel").style.display = 'block';
                }
                else {
                    document.getElementById("x-palette-panel").style.display = 'none';
                }
            });
 
        });
rree

画像をクリックして 4606083091e990dee6936f53097509c4 を表示し、この画像以外のページ上の他の場所をクリックします
0c9b3a9782863ce4fad49ac35414e864隠れる。 。 。

私の問題は、4606083091e990dee6936f53097509c4 で onclick をトリガーすると、最初にトリガーされるのは div を非表示にするマウス クリック イベントであるため、
onclick メソッドがトリガーされません。 。 。 。

神に助けを求めてください。 。 。コードを教えてください~~ありがとうございます

ハイコントラストではイベントバブリングは禁止です

<div id="x-palette-panel" class="panel" style="left: 500px; display: none;">
   <span style="color:#000000;background-color:#ffffff;" onclick="highContrast(0)">黑底白字</span>
</div>

うーん。 。あまり理解できません。 。 ! highContrast(event,0) のイベント パラメーターは何ですか? ? ?関数 stopBubble(e,x) メソッドが呼び出される場合もあります。 。 。 。

バブリングは禁止ですか? ?バブリングを無効にすることで onclick を実現できますか?

上記は間違っています。完全なテストコードは次のようになります。
注: マウスダウンではなくクリックを使用する必要があります

    $("span").click(function(event){  
        event.stopPropagation(); // do something  
    })  


or
   <span style="color:#000000;background-color:#ffffff;" onclick="highContrast(event,0)">黑底白字</span>

function stopBubble(e,x) {  
//你的执行代码
     if (e && e.stopPropagation) {//非IE  
         e.stopPropagation();  
     }  
     else {//IE  
         window.event.cancelBubble = true;  
     }  
 }
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <title>无标题页</title>
  <script type="text/javascript" src="jquery-1.8.1.min.js"></script>
</head>
<body>
  <form id="form1" runat="server">
  <div id="x-palette-panel" class="panel" style="left: 500px; display: none;">
    <span style="color: #000000; background-color: #ffffff;" onclick="highContrast(event,0)">
      黑底白字</span>
  </div>
  <img src="http://avatar.profile.csdn.net/C/9/4/2_net_lover.jpg" id="color" />
  <div>其他地方的内容</div>
  </form>
  <script type="text/javascript">
    $(function () {
      $(document).click(function (event) {
        if (event.target.id == &#39;color&#39;) {
          document.getElementById("x-palette-panel").style.display = &#39;block&#39;;
        }
        else {
          document.getElementById("x-palette-panel").style.display = &#39;none&#39;;
        }
      });
    });
    function highContrast(e, x) {
      alert("你点击了 黑底白字 参数=" + x);
      if (e && e.stopPropagation) {//非IE  
        e.stopPropagation();
      }
      else {//IE  
        window.event.cancelBubble = true;
      }   
    }
  </script>
</body>
</html>

JQuery と JS を同時に使用してください

以上がjQueryイベントにおけるonclickとmousedownの間の競合の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。