$("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(); } });