我正在寻找隐藏已默认隐藏的切换div的方法。如果用户点击它之外我想隐藏div!
我试过了:
<script>
$(document).ready(function(){
$("#tab").hide();
$("#open_tab").on("click",function(){
$("#tab").toggle();
$("*").on("mouseup",function(e){
var clicked=$(this).attr("id");
if(clicked !="tab"){
e.stopPropagation();
$("#tab").hide();
}
else {
e.stopPropagation();
}
});
});
}); </script>
但我不知道我的代码有什么问题。请任何人可以帮忙吗?
答案 0 :(得分:0)
toggle()
jQuery函数:
显示或隐藏匹配的元素。 (documentation)
因此,您不需要任何mouseup
事件。只需将toggle()
函数on click
用于#open_tab
。
<div id="open_tab">Click</div>
<div id="tab">TOGGLE</div>
$("#tab").hide();
$("#open_tab").on("click", function () {
$("#tab").toggle();
});
答案 1 :(得分:0)
您的mouseup
个活动仅在click
上的open_tab
活动中注册。你应该搬家
这个区块在$("#open_tab").on("click",function()
之外。请尝试以下方法:
<script>
$(document).ready(function(){
$("#tab").hide();
$("#open_tab").on("click",function(){
$("#tab").toggle();
});
$("*").on("mouseup",function(e){
var clicked=$(this).attr("id");
if(clicked !="tab"){
e.stopPropagation();
$("#tab").hide();
} else {
e.stopPropagation();
}
});
});
</script>
更新:这是一个较短的版本:
<script>
$("#tab").hide();
$(document).on('click', function (evt) {
if (evt.target.id == 'open_tab') {
$('#tab').toggle();
} else if (evt.target.id != 'tab') {
$('#tab').hide();
}
});
</script>