首先看下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>