幫朋友解決這個問題,我發現用以往想想像的方式來實現,貌似不太可行,所以從網上找了一些解決辦法,進行優化,這篇比較詳細,所以拿來備忘,另一方面也希望可以幫助需要的同學!
問題背景: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
