首先看下JS的事件模型,JS事件模型為向上冒泡,如onclick事件在某一DOM元素被觸發後,事件將跟隨節點向上傳播,直到有click事件綁定在某一父節點上,如果沒有將直至文檔的根。
阻止冒泡:1、stopPropagation()對於非IE浏覽器。2、cancelBubble屬性為true,對於IE浏覽器,
而Jquery已經有兼容浏覽器的方法,event.stopImmediatePropagation();
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="js/jquery-1.4.4.min.js" ></script>
<title></title>
</head>
<style type="text/css">
body
{
background-color:#999999;
}
#myDiv
{
background-color:#FFFFFF;
width:250px;
height:250px;
display:none;
}
</style>
<body>
<input id="btn" type="button" value="顯示DIV" />
<div id="myDiv">
This is a div;
</div>
</body>
<script type="text/javascript">
var myDiv = $("#myDiv");
$(function ()
{
$("#btn").click(function (event)
{
showDiv();//調用顯示DIV方法
$(document).one("click", function ()
{//對document綁定一個影藏Div方法
$(myDiv).hide();
});
event.stopPropagation();//阻止事件向上冒泡
});
$(myDiv).click(function (event)
{
event.stopPropagation();//阻止事件向上冒泡
});
});
function showDiv()
{
$(myDiv).fadeIn();
}
</script>