Я только что сделал демоверсию моего проекта. Я настоятельно рекомендую вам проверить мой JSFiddle и посмотреть, что именно происходит.Как сделать jQuery .stop() работать для переключения анимаций
Я также разместил здесь код.
HTML:
<div ng-app="slideApp" ng-controller="slideCtrl">
<input type="button" value="Slide Down" ng-click="toggleSlide()">
<br>
<div style="display:none" slide-toggle>
<a class="slide hide-slide" href="#">Slide Up</a>
</div>
</div>
AngularJs:
var app = angular.module("slideApp", []);
app.controller("slideCtrl", function($scope, $timeout) {
$scope.slide = false;
$scope.toggleSlide = function() {
$scope.slide = true;
}
});
app.directive("slideToggle", function() {
return {
restrict: "A",
link: function(scope, element) {
scope.$watch("slide", function(newVal) {
if (newVal) {
$(element).slideDown().delay(2000).slideUp();
}
scope.slide = false;
})
$(element).find(".hide-slide").on("click", function() {
$(element).stop(true, true).slideUp();
})
}
}
})
Моя проблема заключается в том:
Когда "скользят вниз" нажата, панель будет скользить вниз и последний в течение 2-х секунд до него автоматически переместится вверх.
Теперь сделайте следующее: 1. повторно нажмите «Сдвиньте вниз», чтобы отобразить панель, а затем нажмите «Сдвинуть вверх», чтобы скрыть панель; 2. После выполнения вышеизложенного несколько раз нажмите «Слайд вниз» (не нажимайте «Slide Up» на этот раз), вы увидите, что панель скользит вниз и быстро продвигается вверх, в то время как панель должна скользить после 2 секунд задержки.
Я знаю, почему это не работает (jQuery .Stop() documentation).
Если более чем один метод анимации называется на тот же элемент, что позже анимации помещаются в очереди эффектов для элемента. Эти анимации не начинаются до тех пор, пока не завершится первая. Когда вызывается .stop(), следующая анимация в очереди начинается немедленно.
Но есть ли у кого-нибудь решение, которое делает всплытие панели после 2-секундной задержки? Я очень ценю это, если у вас есть решение, чтобы оно работало и обновляло мой JSFiddle. Спасибо!
Это ответ! Большое спасибо Кевин! Ты спас мой день! – NMSL
@Ealon Одна маленькая критика. Это упростило бы ваш вопрос, если бы вы удалили угловой компонент из вопроса. Вся проблема могла быть воссоздана только с помощью jQuery, что упростило бы ваш вопрос. –
Да, я буду следовать вашей критике в будущем. Еще раз спасибо! – NMSL