首頁 > web前端 > js教程 > 主體

jQuery事件中onclick與mousedown衝突的解決方法

黄舟
發布: 2017-06-28 09:25:54
原創
2461 人瀏覽過

onclick和mousedown衝突怎麼辦? ? ?

$(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';
                }
            });
 
        });
登入後複製
<div id="x-palette-panel" class="panel" style="left: 500px; display: none;">
   <span style="color:#000000;background-color:#ffffff;" onclick="highContrast(0)">黑底白字</span>
</div>
登入後複製

我透過點擊某個圖片讓顯示出來,點擊頁面除這個圖片外的其他地方這個
隱藏。 。 。

我的問題就是當我在觸發onclick時先觸發的是滑鼠點擊事件引起div又隱藏,這樣就不觸發
onclick的方法。 。 。 。

求大神幫忙解決。 。 。求程式碼~~謝謝

highContrast裡面禁止事件冒泡

    $("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;  
     }  
 }
登入後複製

額。 。不是很理解。 。 ! highContrast(event,0)這個event參數是什麼? ? ?還有就是function stopBubble(e,x)方法什麼時候呼叫。 。 。 。

禁止冒泡? ?難道禁止冒泡就可以實現onclick了嗎?

上面寫錯了,完整的測試程式碼應該是
注意:應該是用click,而不是mousedown

<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>
登入後複製
$(function() {
            $(document).mousedown(function(event) {
                if (event.target.id == &#39;color&#39;) {
                    document.getElementById("x-palette-panel").style.display = &#39;block&#39;;
                }
                else if(event.target.id!=&#39;x-palette-panel&#39;){ //再做一层判断
                    document.getElementById("x-palette-panel").style.display = &#39;none&#39;;
                }
            });
 
        });
登入後複製

一邊用JQuery一邊用JS  為什麼不用一個就好

   

以上是jQuery事件中onclick與mousedown衝突的解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板