2016-11-24 6 views
0

Я анимация в элементе, который имеет достаточно содержимого, чтобы вызвать общую высоту div.Javascript Promise on JQuery addClass

Для обзора по этой фотографии от JQuery vegas background slider понадобится использовать цифровой фотоаппарат.

Нет Я живу в элементе при событии click и использую следующий javascript;

function loadSpecification() { 
     hideAll(); 
     $("#specification").removeClass("hidden").addClass("show", { 
      complete: function() { 
       console.log("completed animation"); 
       loadVegas(); 
      } 
     }); 
    } 

, где функция в loadVegas() перезагружает элемент Вегас для того, чтобы установить ползун, чтобы покрыть вновь расширенной DIV.

Однако, полная функция не запускается в этом экземпляре, я вызываю ее правильно? Если да, то что тут не так?

Мои классы css следующие:

.hidden { 
    display: none; 
    opacity: 0; 
    width: 0; 
    transition: opacity 1s ease; 
    -webkit-transition: opacity 1s ease; 
    -moz-transition: opacity 1s ease; 
} 

.show { 
    display: block; 
    opacity:1; 
    margin-bottom:10px; 
    /*width: inherit;*/ 
} 
+1

Я не думаю, что addClass имеет любую подпись с классом и обратного вызова. Я уверен, что это просто добавление класса синхронно. – Axnyff

+0

http://stackoverflow.com/questions/7134584/how-do-i-use-transitionend-in-jquery – DaniP

+0

Возможный дубликат [Как добавить функцию обратного вызова к addClass jQuery?] (http://stackoverflow.com/questions/14567990/how-to-add-a-callback-function-to-the-addclass-method-of-jquery) – Alex

ответ

4

отлично работает, не забудьте добавить библиотеку JQuery UI, как полная функция не реализована в JQuery, но в JQuery UI. См. docs для получения дополнительной информации.

$("#specification").removeClass("hidden").addClass("show", { 
 
    complete: function() { 
 
    console.log("completed animation"); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script> 
 
<div id="specification">test</div>

+0

добавление целой библиотеки для одной функции немного накладные расходы, не так ли? – Alex

+0

@Alex Я просто отвечаю на вопрос. Накладные расходы или нет, это не вопрос. Я согласен, но это огромные накладные расходы. – Linek

+0

Я просто упоминал об этом, ничего страшного :) на этот вопрос ответили так много раз, без необходимости загружать jquery ui, поэтому я просто чувствую, что это не хорошая практика. И это прекрасно сказать, что, не так ли? :) Ваше стремление должно состоять не только в том, чтобы найти какое-либо решение, но, может быть, и в хорошем - особенно если оно упоминалось столько раз, прежде чем ... – Alex