0

兩個類與AngularJS/jqLit​​e我wan't通過切換類slideInRightslideOutRight的UI元素得到的slideIn /滑出式動畫。切換上點擊

我試過了不同的方式,但我只能用一個className。

如何添加類slideInRight第一,類slideOutRight第二次點擊我的帶班下拉菜單 ul元素呢?

我試着這樣說:

angular.element('.dropdown-toggle').on('click', function(){ 
    angular.element('ul.dropdown-menu').toggleClass('slideOutRight slideInRight'); 
}); 

我在做什麼錯?

希望你能幫上忙。


UPDATE:

這裏是我的代碼的當前狀態的Plunker。這樣只有slideInRight動畫纔有效。如果我再次點擊該按鈕,則ul消失而不顯示slideOutRight動畫。

怎麼了?

回答

0

你可能想嘗試使用角的ng-class

我有點新的角度,但我做的方式是這樣的:

<ul class="dropdown-menu" ng-class="ulOpen ? 'slideOutRight' : 'slideInRight'"> 

和JS

angular.element('.dropdown-toggle').on('click', function(){ 
    if($(this).hasClass('.slideOutRight')) { 
     ulOpen = true; 
    } else { 
     ulOpen = false; 
    } 
}); 
+0

感謝您的建議ntgCleaner。與@jbrown的方法一樣,只有SlideInRight動畫有效。當我再次單擊該按鈕時,ul消失而不顯示slideOutRight動畫 – Codehan25

+0

下面是一個用我的代碼當前狀態的Plunker:[Plunker](https://plnkr.co/edit/yIthpKYZwNvi60PzAHZj?p=preview) – Codehan25

0

到控制器添加ulOpen可變

一個範圍

控制器

$scope.ulOpen = false; 

HTML

那麼你應該依靠angularjs指令NG單擊設置ulOpen值:

<button class="dropdown-toggle" type="button" ng-click="ulOpen=!ulOpen">Toggle Class</button> 

和NG-類基於ulOpen的值時切換類:

<ul class="dropdown-menu" ng-class="slideOutRight: ulOpen, slideInRight: !ulOpen"> 

一般來說,我會建議,只要有可能,你會發現純粹的angularjs解決方案。我發現很少的情況下,沒有一個本地的角度指令,可以處理我會在jQuery中嘗試做的事情。

+0

感謝你的建議jbrown。但這是SlideInRight anmation工作的方式。當我再次點擊該按鈕時,ul消失而沒有slideOutRight動畫。 – Codehan25

+0

這是一個與我的代碼的當前狀態的Plunker:[Plunker](https://plnkr.co/edit/yIthpKYZwNvi60PzAHZj?p=preview) – Codehan25

+0

@ Codehan25 - 問題不在於使用ng-class,而是相反,引導程序的下拉菜單類和動畫的slideOutRight/slideInRight類會發生一些事情。你可以通過從ul元素中刪除下拉菜單類來看到這一點。我不是css專家,但我猜測解決這個問題的唯一方法是破解bootstrap和動畫css中的一個或兩個。您可能需要修改或重新發布您的問題,以引起css專家的注意。 – jbrown