日期:2014-05-16  浏览次数:21554 次

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

------解决方案--------------------
恩,这是个问题。我也等答案。
------解决方案--------------------
HTML code

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

------解决方案--------------------

禁止冒泡就行 
 
HTML code

<!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>

------解决方案--------------------
2楼是正解
------解决方案--------------------
这会是很让用户反感的行为。你会失去很多新旧用户。
------解决方案--------------------
$("body").click(function(e){
//e是触发事件的元素,根据这个来排除你想排除的就可以了
})
------解决方案--------------------
冒泡的不要!但是楼主的方法是值得商榷的,最好不要那么干
------解决方案--------------------
你在其他特别的元素上重新设置onclick事件覆盖原事件不就好了?
------解决方案--------------------
JScript code
        $(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();
            }
        });