临时取消绑定鼠标输入从元素
temporary unbind mouseenter from element
我正在尝试使元素的悬停和单击事件都对相同的(在本例中为top
)属性进行动画处理。
看看这个小提琴:http://jsfiddle.net/XC9Xu/1/
顶部有一个固定a
,top:-50px
和height=100px
,
1-当您悬停时,它的顶部会动画化为top=0
,并且在鼠标离开顶部时再次变为top=-50
。
2-点击时:动画top=200px
一切都很好,但是一旦你移动光标,它就会说:嘿,我上面的元素在哪里,我现在不在上面,回到top=-50px
:D
我需要告诉它忘记过去,展望未来!
我的期望:我希望该元素在单击后保持top=300px
,并且在单击后移动鼠标时不会返回到top=-50px
。然后,如果您再次将光标移到它上面,它的顶部将从 300 变为 0,依此类推......
$(document).ready(function(){
$('a')
.hover(
function(){
$(this).animate({top:0});
},
function(){
$(this).animate({top:-50});
}
)
.on("click",function(){
$(this).animate({top:300});
});
});
a{
display:block;
position:fixed;
top:-50px;
left:0;
width:100%;
height:100px;
background:#ccc;
}
只需设置一个标志,并使用它来启用/禁用悬停功能。
看到这个小提琴
var click_triggered = false;
$(document).ready(function(){
$('a')
.hover(
function(){
if(!click_triggered){
$(this).animate({top:0});
}
},
function(){
if(!click_triggered){
$(this).animate({top:-50});
}
}
)
.on("click",function(){
click_triggered = true;
$(this).animate({top:300});
});
});
或者,如果您希望它在第二次单击后恢复,则可以执行类似此单击处理程序的操作:
.on("click",function(){
click_triggered = !click_triggered;
$(this).animate({top:300});
});
这就可以了
$(document).ready(function(){
reduceHeight = function(){
$(this).animate({top:-50});
};
$('a')
.hover( function(){
$(this).animate({top:0});
$(this).bind('mouseleave', reduceHeight);
})
.click( function(){
$(this).unbind('mouseleave');
$(this).animate({top:300});
});
});
相关文章:
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 访问代码生成的输入元素上的keyup事件
- 使用 jQuery,当我在输入框外部单击时,如何更改输入元素的值
- 使用jQuery切换来显示内容,但防止在用户单击输入元素时关闭
- 如何使用角度事件处理程序引用输入元素的值
- 获取javascript中输入元素的索引
- 为什么Bootstrap typeahead不适用于具有相同ID的输入元素
- 如何使用javascript在输入元素中显示特殊字符
- 动态添加的输入元素不会在脚本中返回值
- 使用 jQuery 禁用除表单中的某些输入元素之外的所有输入元素
- 将焦点设置为输入元素角度 js
- 如何仅在输入元素具有焦点时才启动 setInterval
- 即使使用 parseInt,我也无法从输入元素中获取数值
- 通过应用自定义 css 类禁用 html 输入元素
- 聚合物 - 访问自定义元素内的 DOM 输入元素
- HTML-输入元素中不可删除的占位符
- 使用jquery将属性附加到输入元素
- 如果所有其他元素都填写在AngularJS中,如何动态添加新的输入元素
- 什么是输入元素上的innerHTML
- 输入元素模式属性的Javascript正则表达式在reFiddle上有效,但在页面上无效