을 표시하려면 그림을 클릭하고,
을 숨기려면 이 그림을 제외한 페이지의 다른 부분을 클릭합니다. . ."/> 을 표시하려면 그림을 클릭하고,
을 숨기려면 이 그림을 제외한 페이지의 다른 부분을 클릭합니다. . .">

 >  기사  >  웹 프론트엔드  >  jQuery 이벤트에서 onclick과 mousedown 사이의 충돌에 대한 솔루션

jQuery 이벤트에서 onclick과 mousedown 사이의 충돌에 대한 솔루션

黄舟
黄舟원래의
2017-06-28 09:25:542412검색

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>

4606083091e990dee6936f53097509c4을 표시할 사진을 클릭하고, 이 사진을 제외한 페이지의 다른 곳을 클릭하세요
0c9b3a9782863ce4fad49ac35414e864 숨다. . .

내 문제는 4606083091e990dee6936f53097509c4에서 onclick을 트리거할 때 가장 먼저 트리거되는 것은 div를 숨기는 마우스 클릭 이벤트이므로
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;  
     }  
 }

어. . 별로 이해가 안 돼요. . ! highContrast(event,0)의 이벤트 매개변수는 무엇입니까? ? ? stopBubble(e,x) 메소드가 호출되는 경우도 있습니다. . . .

버블링은 금지인가요? ? 버블링을 비활성화하면 onclick을 얻을 수 있나요?

위 내용은 잘못되었습니다. 전체 테스트 코드는 다음과 같아야 합니다.
참고: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.