<div class="a">
    <span class="b">M</div>
</div>a和b各有一个click事件,b在a内部现在我点击b的时候同时也出发a事件如何让它不触发

解决方案 »

  1.   

    $('.b').click(function(){
     $('.a').unbind("click");
    })
    上述可以解除a点击事件,但是
    或许有没有让上述方法,只执行一次,b点击完后,再点击a仍然可以触发事件
      

  2.   


    <div class="a" onclick="doA();">
      <span class="b" onclick="doB(event);">BBBB</span>
    AAAA
    </div>
    <script>
    function doA(){
    alert("a")
    }
    function doB(evt){
    alert("b");
    var evt = evt;
    window.event?evt.cancelBubble=true:evt.stopPropagation();
    }
    </script>
      

  3.   

    二楼说的对,这是冒泡事件。嵌套元素绑定了同一种类型的事件,则有内部向外部元素依次响应。解决办法三种:
    $("#xx").bind("click",function(event){
    event.stopPropagation();//阻止父亲元素的冒泡事件   也可以return false ;
    event.preventDefault(); //阻止元素默认行为,比如点击链接会跳转;form里面的submit按钮 也可以return false ;
    return false ;//也可以
      }  
      );
      

  4.   

    我想问一下 如果我的function写成这样function strb(a,k){
    }如何在里面写阻止冒泡事件event.stopPropagation();event 我不知道写在哪里
      

  5.   


    <div class="a" onclick="doA();">
      <span class="b" onclick="doB('ok', event);">BBBB</span>
    AAAA
    </div>
    <script>
    function doA(){
    alert("a")
    }
    function doB(s, evt){
    alert(s);
    var evt = evt;
    window.event?evt.cancelBubble=true:evt.stopPropagation();
    }</script>