我有一个 div,当鼠标进入/悬停在 div 上时,我想弹跳一次。
我的代码适用于 Chrome,但不适用于 Firefox 或 IE。
在 Chrome 中,它会根据需要弹跳一次,但在 FF 和 IE 中,只要鼠标保持在原位,弹跳就会继续。
我也尝试过$('#box').one("mouseenter", function() {
,但盒子会弹跳一次,随后进入 div 的条目不会触发效果。
关于为什么浏览器表现不同以及我能做些什么的任何想法?
我有一个 div,当鼠标进入/悬停在 div 上时,我想弹跳一次。
我的代码适用于 Chrome,但不适用于 Firefox 或 IE。
在 Chrome 中,它会根据需要弹跳一次,但在 FF 和 IE 中,只要鼠标保持在原位,弹跳就会继续。
我也尝试过$('#box').one("mouseenter", function() {
,但盒子会弹跳一次,随后进入 div 的条目不会触发效果。
关于为什么浏览器表现不同以及我能做些什么的任何想法?
$("#box").hover(function(){
if ( !$(this).data("bouncing") ){
$(this).effect("bounce", { direction: 'up', distance: 10, times: 1 })
.data("bouncing", true);
}
},function () {
$(this).data("bouncing", false);
});
一旦它反弹,元素数据属性将保存true
布尔值,
在if
语句中我们只检查它的true
or false
。
在鼠标离开时,我们只是将其设置为 false,以允许新的悬停和...新的反弹!:)
你也可以像上面这样写:
$("#box").on('mouseenter mouseleave',function( e ) {
var el = $(this);
if(!el.data("b"))el.effect("bounce", {direction:'up',distance:10,times:1} );
el.data("b",e.type=="mouseenter"?true:false);
});