2011-03-09 92 views
0

我有一個簡單的代碼,這將增加/刪除類:試圖瞭解toggleClass()

clearAndSetLogin: function (row) { 

    if ($j('#leademails tr').is('.waslogin')) 
     $j('#leademails tr.waslogin').removeClass('waslogin'); 

    $j('#leademails tr.islogin').removeClass('islogin').addClass('waslogin');  
    row.addClass('islogin'); 
}, 

我可以做同樣的toggleClass()?如果是這樣,爲什麼這會更有效率?謝謝!

回答

4

是不需要的if部分

讓你的代碼需要

$j('#leademails tr.waslogin').removeClass('waslogin'); 
$j('#leademails tr.islogin').removeClass('islogin').addClass('waslogin'); 
row.addClass('islogin'); 

toggleClass將(,我的假設是你有#leademails下的多個tr元素,並且你並不全部獲得isloginwaslogin)。

+0

感謝您的解釋! – 2011-03-09 15:15:27

-1

看看JQ的API,http://api.jquery.com/toggleClass/

但沒錯,這應該是你的尋找:

clearAndSetLogin: function (row) { 
    $j('#leademails tr').toggleClass(".waslogin"); 
    $j('#leademails tr').toggleClass(".islogin"); 
}, 
+0

不起作用。看到我的答案,試圖解釋爲什麼。 – 2011-03-09 15:14:20

2

不,toggleClass不會做完全相同的事情(至少不是沒有你現有的大部分代碼)。

如果我們把下面的代碼(這不會做你想要的):

clearAndSetLogin: function (row) { 
    $j('#leademails tr').toggleClass(".waslogin"); 
    $j('#leademails tr').toggleClass(".islogin"); 
}, 

,並通過它逐行工作clearAndSetLogin的調用將添加 waslogin如果它不存在,如果是的話刪除它,併爲islogin做同樣的事情。如果您的代碼中只有當前登錄,則只會添加waslogin。

如果需要,可以用toggleClass做.islogin部分。

+0

這會將'.waslogin'和'.islogin'添加到'#leademails'下的所有'tr'元素。 – 2011-03-09 15:11:07

+0

@Gaby,那是我的觀點。因此,no,toggleClass **不會**做同樣的事情。我想我沒有說清楚。我會大膽的更多的東西:) – 2011-03-09 15:12:27

+0

不是你的錯..我必須快速閱讀它,並強調代碼部分...你的免責聲明已經足夠明確:) – 2011-03-09 17:04:05