2016-01-08 2 views
1

У меня есть небольшая проблема с моим кодом jQuery.Конфликт с анимацией click и hover JQuery

Вот мой код:

$("#bloc-search").click(function(){ 
     $(this).toggleClass("bloc-search-highlight"); 
     //var jObj = $(this); 
}); 

if ($("#formulaire-search").is(':visible')){ 

    $('.search').attr('src', '/img/search-blanc.png'); 

} else { 

    $("#bloc-search").hover(
     function(){ 
      $('.search').attr('src', '/img/search-blanc.png'); 
     }, function(){ 
      $('.search').attr('src', '/img/search-blue.png'); 
    }); 

} 

Он работает почти идеально, но моя проблема, когда мой # Formulaire-поиск отображается функция парить по-прежнему работает, и я не знаю, почему, потому что в моем случае У меня нет функции наведения. Я также пробовал с hasClass вместо видимого не ...

Идея?

Спасибо за вашу помощь ;-)

ответ

1

Вы можете попробовать это:

if ($("#formulaire-search").is(':visible')){ 
    $("#bloc-search").unbind('mouseenter mouseleave'); 
    ... other stuff ... 
} else { 
    $("#bloc-search").bind('mouseenter mouseleave'); // to be sure 
    ... other stuff ... 
} 

Вы, возможно, придется перепривязывают это тогда, когда вам нужна функциональность Hover

UPDATE

Это работает как следует - с помощью mouseenter и mouseleave хорошо работает и может также К изначально так же, как легко

if ($("#formulaire-search").is(':visible')){ 

    $('.search').attr('src', '/img/search-blanc.png'); 

} else { 

    // do what you want here - only works when #formulaire-search not visible  
    $("#bloc-search").on('mouseenter', function(){ 
      $(this).addClass('goTeal'); 
    }); 

    $("#bloc-search").on('mouseleave', function(){ 
      $(this).removeClass('goTeal'); 
    }); 

} 

Here's a fiddle to look at

+0

Спасибо за ваш ответ, но он по-прежнему не работает. Даже с вашей идеей: 'if ($ (" # formulaire-search "). Is (': visible')) { \t $ (" # bloc-search "). Unbind ('mouseenter mouseleave'); $ ('. Search'). Attr ('src', '/img/search-blanc.png'); } else { \t $ ("# block-search"). Bind ('mouseenter mouseleave'); $ ("# bloc-search"). Hover ( function() { $ ('. Search'). Attr ('src', '/img/search-blanc.png'); }, функция () { $ ('. Search'). Attr ('src', '/img/search-blue.png'); }); } ' – gat91200

+0

Привет, Даррен, я попытался с вашим обновлением (mouseenter, mouseleave), и он все еще не работает. Я не знаю, почему mouseenter и mouseleave все еще активны, в то время как div видна :-( – gat91200

+0

Вы посмотрели на скрипку, которую я сделал?, Которая работает так, как если бы вы этого не сделали, тогда я подозреваю, что что-то еще вызывает ее to fail - есть ли ошибки консоли консоли? –

Смежные вопросы