幫朋友解決這個問題,我發現用以往想想像的方式來實現,貌似不太可行,所以從網上找了一些解決辦法,進行優化,這篇比較詳細,所以拿來備忘,另一方面也希望可以幫助需要的同學!
問題背景:jQuery事件問題!!對象 click和document click沖突問題
我想點擊某個元素顯示一個對象, 點擊頁面任意處,隱藏這個對象
//點擊look對象,顯示隱藏mydiv
$("#look").bind("click", function () {
$("#mydiv").toggle();
})
//點擊任意地方,隱藏顯示的mydiv
$(document).bind("click", function () {
if ($("#mydiv").css("display") == "block") {
$("#mydiv").hide();
}
})
這樣兩個事件沖突了,點擊look對象,不會顯示mydiv
------解決方案--------------------
防止點擊事件冒泡 return false;
------解決方案--------------------
不是沖突。。是冒泡了,,
$("#look").bind("click", function (e) {
$("#mydiv").toggle();
e.stopPropagation
})
試試
------解決方案--------------------
-
JScript code
$("#look").bind("click", function () { $("#mydiv").toggle(); return false; })
------解決方案--------------------
-
HTML code
$(document).bind("click", function (e) { if ($(e.target).is('#test')) return; else{ if ($("#mydiv").css("display") == "block") { $("#mydiv").hide(); } } })
------解決方案--------------------
e.stopPropagation
是這個
------解決方案--------------------
------解決方案--------------------
-
JScript code
$("#look").bind("click", function () { $("#mydiv").toggle(); event.stopPropagation(); })
------解決方案--------------------
------解決方案--------------------
return false就好了.
-
JScript code
<html> <head> <script type="text/javascript" src="/jquery/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("p").click(function(){ $(this).hide(); }); $("#look").bind("click", function () { $("#mydiv").toggle(); return false; }) //點擊任意地方,隱藏顯示的mydiv $(document).bind("click", function () { if ($("#mydiv").css("display") == "block") { $("#mydiv").hide(); } }) }); </script> </head> <body> <div id='look'> click </div> <div id="mydiv"> <p>If you click on me, I will disappear.</p> </div> </body> </html>
------解決方案--------------------
-
JScript code
$(function(){ $("#look").click(function (e) { $("#mydiv").show(); return false; }); //點擊任意地方,隱藏顯示的mydiv $(document).click(function () { $("#mydiv").hide(); }); });
轉自:http://blog.csdn.net/xudanna/article/details/51818992