意图:
问题: 当DIV处于slideDown位置时(var isclicked = true),点击$('html')时会一直触发。我错过了什么,所以点击o f $('html')只会触发WHILE DIV(var isclicked = true)
var isclicked = false;
$('#clickme').click(function(event){
doslider();
console.log(isclicked);
if(isclicked == true){
$('html').click(function(event){
console.log('is box opened? '+isclicked);
});
}
});
function doslider(){
if(isclicked == false){
$('#myslider').slideDown('slow');
isclicked = true;
}else{
$('#myslider').slideUp('slow');
isclicked = false;
}
return isclicked; }
JSFiddle:http://jsfiddle.net/7Zfwx/92/
答案 0 :(得分:1)
请记住先停止(并完成)上一个动画:
if(isclicked == false){
$('#myslider').stop(true, true).slideDown('slow');
isclicked = true;
}else{
$('#myslider').stop(true, true).slideUp('slow');
isclicked = false;
}
答案 1 :(得分:1)
抛弃全局isClicked
var,只使用slideToggle
:
$("#clickme").click(function(e) {
e.stopPropagation();
$("#myslider").slideToggle("slow");
});
$("body").click(function() {
$("#myslider").is(":visible") ? $("#myslider").slideUp("slow") : 0
});
答案 2 :(得分:0)
使用$('body')
代替$('html')