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