2012-09-11 37 views
0

我在tap事件綁定中處理以下元素。如何根據Jquery鏈式語句中的條件在toggle和removeClass之間切換?

$el 
    .doThis 
    .end() 
    .find("a").first().removeClass(someClass); 

我需要包括條件o.direction == "horizontal"檢查,如果條件爲真,我需要的不是toggleremove

但是我不能讓它開始工作。嘗試這樣的:

$el 
    .doThis 
    .end() 
    .find("a").first().toggleClass(someClass , (o.direction == "horizontal" ? !isCollapse : event)); 

正確切換類別中,如果o.direction == "horizontal",但如果不是的話,我可以不remove代替toggle

問:
有沒有辦法來檢查一個條件,如果不能在jQuery的鏈接語句中執行一個toggle如果條件得到滿足和removeClass

+0

toggleClass的第二個參數是布爾值。代碼中的「event」是什麼?因爲第二個參數將刪除類,所以傳遞'false'。 – MrOBrian

+1

Sheesh。只要停止嘗試一行所有內容並使用'if-else'塊。 –

回答

1
$el 
    .doThis 
    .end() 
    .find("a").first()[o.direction == 'horizontal' ? 'toggleClass':'removeClass'](someClass) 
+0

也是一個不錯的主意。謝謝! – frequent

+0

我還是喜歡這個。 – frequent

1

爲了解決我不確定運行時元素狀態是什麼的問題,並且很難在周圍使用該狀態的變量,我通常使用數據屬性,然後讓代碼管理它們。

<div data-direction="horizontal"> 

然後

if(element.getAttribute("data-direction") == "horizontal") 
{ 
//TODO: remove or toggle 
} 

element.setAttribute("data-direction","state"); 
+0

hm。牢記這一點。我已經在使用data-type =「horizo​​ntal」,然後在我的選項中設置爲'o.direction = $ el.jqmData(「type」)' – frequent

1

event對象不應在else條件下使用管理的狀態。您應該使用false代替:

.toggleClass(someClass , (o.direction == "horizontal" ? !isCollapse : false)) 

這意味着,如果o.direction == "horizontal",CSS類將取決於isCollapse值切換。否則,css類將被刪除。

+0

很酷。我不知道「錯誤」。謝謝 – frequent

相關問題