2014-06-24 129 views
0

我不確定爲什麼這不起作用,也許有人可以提供幫助。我得到這個代碼:用jQuery更改元素類

<dd class="accordion-navigation"> 
    <a href="#panel3" class="switch"><i class="plus"></i> Title</a> 
    <div id="panel3" class="content"> 
    ... 
    </div> 
</dd> 

當我點擊<a>我想從「加」類的i元素開關爲「減」。這是我到目前爲止的代碼:

$('dd.accordion-navigation').on('click', 'a.switch' function(){ 
    $(this).find(i).removeClass('plus').addClass('minus'); 
}); 

不合時宜的它不起作用。如果我能得到提示,我會非常高興。

預先感謝 弗洛裏安

+0

你沒有將'find'函數傳遞給一個字符串......它認爲'i'是一個變量。 – Jasper

+0

錯字:'find(i)'vs'find('i')'。 –

+0

此外,您也可以在這裏使用'.toggleClass('plus minus');'。 –

回答

3

變化從一個變量來選擇的選擇器。

$(this).find('i').removeClass('plus').addClass('minus'); 

這是行得通的。

在上面的代碼中,你有i在這種情況下,它將是一個變量。但是你沒有任何變量,從中獲取數據或值。所以,你需要傳遞一個字符串來檢測HTML元素。在這種情況下'i'將是有效的。否則,您可以創建一個單獨的變量,其值爲字符串i元素。像這樣

var i = 'i'; 

...然後你就可以使用它。否則,你將不得不遵守慣例。

1

除非你有一個變量i = "i";,那什麼都找不到。

$('dd.accordion-navigation').on('click', 'a.switch' function(){ 
    $(this).find('i').removeClass('plus').addClass('minus'); 
});