我使用jQuery 1.6,我想提高下面的代碼(即寫事半功倍):提高課堂切換
if (row.hasClass('line_odd')) {
row.removeClass('line_odd');
row.addClass('line_even');
} else {
row.removeClass('line_even');
row.addClass('line_odd');
}
我怎麼能這樣做?
我使用jQuery 1.6,我想提高下面的代碼(即寫事半功倍):提高課堂切換
if (row.hasClass('line_odd')) {
row.removeClass('line_odd');
row.addClass('line_even');
} else {
row.removeClass('line_even');
row.addClass('line_odd');
}
我怎麼能這樣做?
假設行開始與兩個班的只有一個:
row.toggleClass("line_odd line_even")
應該做的伎倆。
替換塊:
var hasOdd = row.hasClass('line_odd');
row.toggleClass('line_odd', !hasOdd).toggleClass('line_even', hasOdd);
您可以使用鏈接
if (row.hasClass('line_odd')) {
row.removeClass('line_odd').addClass('line_even');
} else {
row.removeClass('line_even').addClass('line_odd');
}
是不是縮小版。可以通過.toggleClass進一步降低 –
我會建議使用像http://api.jquery.com/toggleClass/,例如:
row.toggleClass("line_odd")
.toggleClass("line_even");
這假定沒有行元素會同時具有line_odd
和line_even
最初設置的類,以便它與您的代碼具有相同的效果。
擊敗我! +1 – Bojangles
請嘗試以下
var isOdd = row.hasClass('line_odd');
row.toggleClass('line_odd', !isOdd);
row.toggleClass('line_even', isOdd);
不需要isOdd變量 –
@Piyush在理想的情況下,我會同意。 OP沒有指定代碼以正確的狀態啓動。考慮一下最初是否同時存在'line_odd'和'line_even'行。在這種情況下,需要'isOdd'。我同意這有點出來,但是OP沒有說明,我想確保我的簡化功能與原始樣本 – JaredPar
一樣好。 –
row.toggleClass('line_odd', row.hasClass('line_odd')).toggleClass('line_even',
row.hasClass('line_odd'));
這是簡化版本,這使得使用.toggleClass非常久遠的第二個參數,當真正增加了類,如果錯誤刪除的類。
只有在_already_設置時纔會添加這些類嗎?沒有第二個參數的'toggleClass'已經具有正確的行爲。 – coyotebush
我修正了代碼中的拼寫錯誤。關於不需要第二個參數的第二個陳述 - 不是像$(selector).toggleClass(class,switch)那樣的語法。 –
這是一種可能的語法,是的。如果沒有第二個參數,它將刪除該類,如果不存在,則添加該類。如果**'line_even'**存在,您還需要更改代碼的第一部分,以添加'line_odd'。 – coyotebush
這是給你的假設的方式。 – user113716