В основном я отменяю привязку mouseleave
после нажатия на элемент. Но я хочу, чтобы mouseleave
-вент для этого элемента снова работал , когда щелкает другой элемент. Мой код работает, но он кажется громоздким, потому что я повторяю анимацию снова и снова в моем коде.
Нет ли другого способа временно приостановить mouseleave
, кроме отмены и "повторного связывания"? Есть предложения?
Вот мой пример на jsfiddle
HTML
<div class="container">
CONTAINER ONE
</div>
<div class="container">
CONTAINER TWO
</div>
JS:
$(document).ready(function()
{
//the default hover-event
$('.container').hover(
function(){
$(this).stop().animate({'padding-bottom':'10px'},{queue:false,duration:160});
},
function() {
$(this).stop().animate({'padding-bottom':'0px'},{queue:false,duration:160});
}
);
$('.container').click(function(e) {
e.preventDefault();
// enables the mouseleave for all other `.container`s again.
// also bring the old clicked element into unhovered position again
$('.container')
.bind('mouseleave',function() {
$(this).stop().animate({'padding-bottom':'0px'},{queue:false,duration:160});
}).not(this).stop().animate({'padding-bottom':'0px'},{queue:false,duration:160});
// supress the mouseleave for the clicked element
$(this).unbind('mouseleave');
})
});