【问题标题】:Neglect a function in JavaScript? [duplicate]忽略 JavaScript 中的函数? [复制]
【发布时间】:2013-02-22 15:22:24
【问题描述】:

当我点击 mainDiv 时,函数mainDiv() 将被调用, 当我点击 subDiv 时,mainDiv()subDiv() 函数都会被调用。

当我单击 subDiv 时,我只想调用 subDiv() 函数。我怎样才能做到这一点?

代码:

<div onclick="mainDiv()">
  show main div
  <div onclick="subDiv()">
    show sub div
  </div>
</div>
<script type="text/javascript">
  function  mainDiv(){
    alert("main div is clicked");
  }
  function  subDiv(){
    alert("sub div is clicked");
  }
</script>

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    使用e.stopPropogation()

    HTML

    <div onclick="subDiv(event)">  //<--- pass event parameter
    

    javascrip

    function  subDiv(e){    
    
       if(e.stopPropagation){  // check stoppropogation is avilable
          e.stopPropagation();  //use stopPropogation
       }else{
          e.cancelBubble = true;  // for ie8 and below
       }
       alert("sub div is clicked");
    }
    

    【讨论】:

    • stopPropagation 在 IE8 中不可用。
    • 我没有在 IE8 上测试过,在其他浏览器下也可以,希望 IE8 也一样,谢谢 :)
    • 不用担心......它会......无论如何,谢谢......它帮助......快乐编码...... :)
    【解决方案2】:

    您可以在所有浏览器中使用stopPropagation,除了 IE8(以及来自同一公司的旧版本)。但是如果你想兼容,你应该使用described in quirksmode的解决方案:

       <div onclick="subDiv(event)">
    
       function  subDiv(e){
         e.cancelBubble = true;
         if (e.stopPropagation) e.stopPropagation();
         alert("sub div is clicked");
       }
    

    Demonstration

    【讨论】:

    • 对于内联事件,他不会将事件对象用作参数。
    【解决方案3】:
    <script type="text/javascript">
    function mainDiv() {
        alert("main div is clicked");
    }
    function subDiv(e) {
        if (!e)
            e = window.event;
    
        //IE9 & Other Browsers
        if (e.stopPropagation) {
            e.stopPropagation();
        }
        //IE8 and Lower
        else {
            e.cancelBubble = true;
        }
        alert("sub div is clicked");
    
    }
    

    【讨论】:

      【解决方案4】:

      试试这个

          <div onclick="mainDiv()">
            show main div
            <div onclick="subDiv(event);">
              show sub div
            </div>
          </div>
          <script type="text/javascript">
            function  mainDiv(){
              alert("main div is clicked");
            }
            function  subDiv(arg){
              arg.stopPropagation();
              alert("sub div is clicked" + arg);
      
            }
      </script>
      

      要支持 IE 8 及更低版本,请使用 arg.cancelBubble

      【讨论】:

      • stopPropagation 在 IE8 中不可用。
      • 对ie8及更低版本使用cancelBubble()
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多