2014-09-19 3 views
0

Я проверил несколько сообщений и попытался поставить либо stop(), либо фильтр (': not (: animated)'), чтобы избежать очередей анимации при моем наведении, но это doesn Не работай. Страница больше не будет загружаться каждый раз, когда я пытаюсь добавить эти функции в свой код.Jquery stop queueing пока анимация не закончена на hover

<div id="competences"> 
    <div id="logoComp"> 
     <div> 
      <img id="devLogo" src="img/logoDev.png" /> 
      <p>Developpement</p> 
      <p>- HTML/CSS -</br> 
      - Javascript -</br> 
      - PHP -</br> 
      - Java -</p> 
      </div> 
      <div> 
       <img id="responsiveLogo" src="img/responsive.png" /> 
       <p>Responsive</p> 
       <p>Ce site est responsive et la plupart de mes projets le sont également.</p> 
      </div> 
      <div> 
       <img id="logoPrint" src="img/logoPrint.png" /> 
       <p>Graphisme</p> 
       <p>Photoshop, Illustrator, InDesign, Blender, After Effects, Premiere</p> 
      </div> 
     </div> 
    </div> 

Код:

$(document).ready(function() { 

// when hover over the selected image change the opacity to 1 
    var n = $("#competences").length; 

    for(i=0; i<n; i++){ 
     $('#logoComp div').each(function(){ 
     $(this).hover( 
     function(){ 
      $(this).find('img').hide("slow"); 
      $(this).find('p').delay(500).show("slow"); 

     }, 
     function(){ 
      $(this).find('p').hide("hide"); 
      $(this).find('img').delay(500).show("slow"); 
     } 
     ); 
    }); 
} 
}); 
+0

Почему ваши а) добавление обработчиков в переменную 'каждый '(jQuery этого не требует), и b) делает это в цикле (добавление обработчиков более одного раза!) –

+0

Также иды уникальны, поэтому вы только когда-либо повторяете один раз, независимо от того, сколько их на странице ??? –

ответ

0

Вам нужно упростить код и прекратить использование идентификаторов, поскольку они должны быть уникальными на странице (JQuery будет только «видеть» первый, если у вас есть кратные). Вместо этого используйте классы.

Вам также необходимо решить, когда до stop() существующих анимаций, или они будут цепочки вместе. stop() очищает очередь анимации для этого элемента:

$(document).ready(function() { 

    // when hover over the selected image change the opacity to 1 
    $(".competences .logoComp div").hover(
    function() { 
     $(this).find('img').stop().hide("slow"); 
     $(this).find('p').stop().delay(500).show("slow"); 

    }, 
    function() { 
     $(this).find('p').stop()hide("hide"); 
     $(this).find('img').stop().delay(500).show("slow"); 
    }); 
}); 

JSFiddle: http://jsfiddle.net/zymje5Lq/1/

Это не идеально, но позволяет избежать некоторых проблем :)

+0

Моя страница больше не загружается при попытке вашего кода. – Malane

+0

О нвм не видел, что ты забыл. после остановки(). Проблема в том, что моя анимационная остановка на полпути и мой img вместо повторного появления снова просто остаются скрытыми. – Malane

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