$("body").click(function(){})捕捉全屏点击事件时能否排除掉点击的链接,按钮等?
基于:jquery
现在要求点击整个页面的 时候要弹出窗口,所以我加了$("body").click(function(){})。
弹窗能正常弹出,但是当点击了body里的链接或按钮等时,也执行了弹窗,郁闷啊,
怎么才能排除掉呢? 
如果body里有链接<a></a>或者button,就不执行$("body").click(function(){showdialog();})这里的弹窗,而且执行自己的功能,如跳转页面等(现在会先弹窗后跳转)。

解决方案 »

  1.   


    jQuery(function($) {
               $("body").click(function(e){
                     if ($(e.target).is('a')||$(e.target).is('input:button'))
                         return;
                     else{
                         showdialog();
                     }
                     
               });
                
            }); 看看可以不 。
      

  2.   

       
       禁止冒泡就行 
       
       
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE>demo</TITLE>
      <META http-equiv="content-type" content="text/html;charset=gbk"/>
      <META NAME="Generator" CONTENT="CSS">
      <META NAME="Author" CONTENT="zhangqian">
      <META NAME="Keywords" CONTENT="mydemo">
      <META NAME="Description" CONTENT="this is my demo">
      <LINK rel="stylesheet" type="text/css" href=""></LINK>
      <style type="text/css">
    body
    {

    }
      </style>

      <script type="text/javascript" src=""></script>  </HEAD>
      <BODY>

    <input type="button" value="123"  id="need_hide"/> <script type="text/javascript">
    function test()
    {
    document.body.onclick=function(e){alert("body")}

    }
    test(); function stopPropagation(e) {
    e = e || window.event;
    if(e.stopPropagation) { //W3C阻止冒泡方法
    e.stopPropagation();
    } else {
    e.cancelBubble = true; //IE阻止冒泡方法
    }
    }
    document.getElementById('need_hide').onclick = function(e) {
    stopPropagation(e);
    alert('input');
    } </script> </BODY>
    </HTML>这样你可能得给每个按钮或者是每一个超链接都得添加 stop冒泡的函数,
      

  3.   

    $("body").click(function(e){
       //e是触发事件的元素,根据这个来排除你想排除的就可以了
    })
      

  4.   

    你在其他特别的元素上重新设置onclick事件覆盖原事件不就好了?
      

  5.   

    $(document).click(function(e){
    var target = $(e.target);
    //if(!(target.is('a') || target.is('input[type=button]') || target.is('button'))){
    if(!target.is('a, input[type=button], button')){
    showdialog();
    }
    });
      

  6.   

    $("body").click(function(e){
    if(/a|div|span|input/i.test(e.srcElement.tagName)){
       alert("OK")
    }
    });
    想屏蔽什么,自己加
      

  7.   

    我的项目中不是body的click事件,而是td,做法是:
    $("#button").click(function(){
        $("#td").attr("isLoseClick","true");
           setTimeout(function(){
               $("#td").attr("isLoseClick","false");
            },5);
    });$("#td").click(function(){
       if(!$(this).attr("isLoseClick")||$(this).attr("isLoseClick")=='false'){
          //do somethings
       }
    });貌似还没出过问题~~~