$('html').单击一个又一个单击事件
$('html').click event after another click event
意图:
- 点击(#clickme),DIV向下滑动并进入视图,(var isclicked=true)
- 当(var isclicked=true)和点击(#clickme)时,DIV向上滑动(var iscricked=false)
- 当(var isclicked=true)和DIV在视图中时,单击$('html')将DIV向上滑动(var iscricked=false)
问题:当DIV处于slideDown位置时(var isclicked=true),点击$('html')时会继续激发。我错过了什么,以至于点击o$('html')时只触发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/
放弃全局isClicked
var,只使用slideToggle
:
$("#clickme").click(function(e) {
e.stopPropagation();
$("#myslider").slideToggle("slow");
});
$("body").click(function() {
$("#myslider").is(":visible") ? $("#myslider").slideUp("slow") : 0
});
演示:http://jsfiddle.net/7Zfwx/103/
记得先停止(并完成)上一个动画:
if(isclicked == false){
$('#myslider').stop(true, true).slideDown('slow');
isclicked = true;
}else{
$('#myslider').stop(true, true).slideUp('slow');
isclicked = false;
}
演示:http://jsfiddle.net/maniator/7Zfwx/94/
使用$('body')
而不是$('html')
请参阅此JSFiddle
相关文章:
- CasperJS-如何治疗'单击'在一个循环中
- 单击删除其中一个添加的行
- 使用另一个模板上的单击事件从一个模板传递数据
- 在动态表格单元格跨度中单击时更新一个权重值
- JavaScript:删除一部分代码,并在单击时删除一个元素
- jQuery icheck 回调 - 单击了哪一个
- 检查是否单击了最后一个元素
- 单击时将一个元素的背景图像更改为另一个元素的相同图像
- 检测单击时另一个帧中存在的按钮
- 打开键盘箭头按钮单击的下一个模式
- 单击元素(例如一个或多个图像标签)和相同的函数应在angularjs中调用
- Javascript - 多类.如何区分单击了哪一个
- 单击在另一个范围对象中全选
- 在链接单击上创建一个对话框,javascript第2部分
- 如何通过单击命令将一个SVG路径元素变形为另一个
- 在JavaScript对象中移动并在每次单击时递增一个
- 单击按钮在一个站点上工作,但在其他站点上不工作
- 单击按钮打开一个新窗口,并用D3绘制多个大圆
- $('html').单击一个又一个单击事件
- 当已经单击了另一个元素时,如何显示该元素