我用.toggle()
隐藏/显示元素 <div style="position: absolute; top: 0; right: 250px;z-index:7">
<div class="Search" style="display: none;" >
<table width="100%" style="border: 1px solid #fff; border-radius:5px;padding:15px">
<tr>
<td>
<asp:DropDownList ID="CategoryDropDownList" runat="server" />
</td>
</tr>
</table>
</div>
<div id="showSreachDiv">
<a style="cursor: pointer">
<img src="images/btnSearch.png" /></a>
</div>
</div>
使用jquery
$(document).ready(function () {
$("#showSreachDiv").click(function () { $(".Search").toggle("slow"); });
});
当我点击我的div时,显示切换div。
但是我想要,在点击页面上的任意位置时隐藏切换div。
我使用此代码
$(function () {
// body click
$("body").click(function () {
// element to toggle
var $el = $(".Search");
// toggle div
if ($el.is(":visible")) {
// fade out
$el.fadeOut(200);
} else {
// fade in
$el.fadeIn(200);
}
});
});
但是当我点击我的div时,它会显示并隐藏toogle div。
答案 0 :(得分:2)
您必须停止将事件冒泡到文档e.stopPropagation()
:
$(document).ready(function () {
$("#showSreachDiv").click(function (e) { //<--------pass here
e.stopPropagation(); // <--------------stop here
$(".Search").toggle("slow");
});
$(document).click(function () { // you don't need the else part to fadeout
var $el = $(".Search");
if ($el.is(":visible")) {
$el.fadeOut(200);
}
});
});
答案 1 :(得分:0)
作为修补程序,请检查目标元素是否不是要隐藏的元素:
$("body").click(function (event) {
// element to toggle
var $el = $(".Search");
if( event.target == $el[0])
return;
...
});
答案 2 :(得分:0)
试试这个。单击“showSreachDiv”
后,您需要停止事件传播$(document).ready(function () {
$('#showSreachDiv').click(function(evt) {
$(".Search").toggle("slow");
evt.stopPropagation();
});
$(document).click(function(){
$(".Search").toggle("slow");
});
});