2014-02-24 60 views
0

当div被悬停时,我显示一个标题,我想在鼠标停留在div时禁用该效果....所以用户必须鼠标在标题之前会再次显示。我可以取消绑定didsable这一点,但问题是它杀死小鼠断 功能:悬停jQuery解除绑定,悬停关闭重新启用

$('.lowerFrontStripRow img').hover(   

function(){ 
    $('.orbit-caption-bottom#bottomThumb'+$(this).data("thumbid")).slideDown(); 
    $('.lowerFrontStripRow img').unbind(); 
}, 

function(){ 
    $('.lowerFrontStripRow img').bind(hover); 
    $('.orbit-caption-bottom').slideUp(); 

} 

); 

如何禁用,直到鼠标关闭行动?

谢谢,

Alan。

+0

'unbind()'什么? – Satpal

+0

应该是一个更好的方式来做你期望的事情。你应该提供更多相关的代码作为HTML标记,也许是一个jsfiddle –

回答

0

只有这应该工作

$('.lowerFrontStripRow img').hover(   

function(){ 
    $('.orbit-caption-bottom#bottomThumb'+$(this).data("thumbid")).slideDown(); 

}, 

function(){ 

    $('.orbit-caption-bottom').slideUp(); 

} 

); 
0

.unbind()的第一个参数是eventType这样:

$('.lowerFrontStripRow img').unbind('hover'); 

将解除绑定你的函数正确的语法。

Btw可能你必须改变整个问题的方法。

0

你似乎想要做的是:

显示,如果:

  • 如果任一下列条件满足用户将鼠标悬停在一个元素

禁用:

  • 用户不会将鼠标悬停在元素上
  • 用户将鼠标悬停在元素上的x个时间。

首先,hover(...).on('mouseover').on('mouseout')一个速记;它实际上绑定了这两个事件,并且您还必须解除这两个事件的绑定。你似乎也有多次调用mouseover函数的问题?为什么不在元素上存储一些信息来防止这种情况?

$('.lowerFrontStripRow img').on('mouseover', function() { 
    if($(this).data('displaying') != 1) { 
     $(this).data('displaying', 1); 
     $('.orbit-caption-bottom'+$(this).data("thumbid")).slideDown(); 
     setTimeout(function() { $('.orbit-caption-bottom').slideUp(); }, 3000); 
    } 
}).on('mouseout', function() { 
    $(this).data('displaying', 0); 
    $('.orbit-caption-bottom'+$(this).data("thumbid")).slideUp(); 
});