$("body").click(function(){})捕捉全屏点击事件时能否排除掉点击的链接,按钮等?
基于:jquery
现在要求点击整个页面的 时候要弹出窗口,所以我加了$("body").click(function(){})。
弹窗能正常弹出,但是当点击了body里的链接或按钮等时,也执行了弹窗,郁闷啊,
怎么才能排除掉呢?
如果body里有链接<a></a>或者button,就不执行$("body").click(function(){showdialog();})这里的弹窗,而且执行自己的功能,如跳转页面等(现在会先弹窗后跳转)。
基于:jquery
现在要求点击整个页面的 时候要弹出窗口,所以我加了$("body").click(function(){})。
弹窗能正常弹出,但是当点击了body里的链接或按钮等时,也执行了弹窗,郁闷啊,
怎么才能排除掉呢?
如果body里有链接<a></a>或者button,就不执行$("body").click(function(){showdialog();})这里的弹窗,而且执行自己的功能,如跳转页面等(现在会先弹窗后跳转)。
jQuery(function($) {
$("body").click(function(e){
if ($(e.target).is('a')||$(e.target).is('input:button'))
return;
else{
showdialog();
}
});
}); 看看可以不 。
禁止冒泡就行
<!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冒泡的函数,
//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();
}
});
if(/a|div|span|input/i.test(e.srcElement.tagName)){
alert("OK")
}
});
想屏蔽什么,自己加
$("#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
}
});貌似还没出过问题~~~