2013-03-10 58 views
0

我們有addClass,removeClass,toggleClass三元或更簡潔setClass相當於

什麼是jQuery的相當於

document.getElementById("field").className=(someBoolean)?"pass":"fail"; 

,但使用的是離開現有的類來代替的方法之一?

我來最接近的是在我看來不那麼優雅

$("#field") 
    .toggleClass("pass",someBoolean) 
    .toggleClass("fail",!someBoolean); 

或者使用瓦爾

$("#field") 
    .toggleClass(classWhenTrue,someBoolean) 
    .toggleClass(classWhenFalse,!someBoolean); 

例子:

$(function() { 
 
    var pass = true; 
 

 
    $("#field") 
 
    .toggleClass("pass", pass) 
 
    .toggleClass("fail", !pass); 
 
    var classes = [...$("#field").get(0).classList]; 
 
    console.log(classes) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<input id="field" type="text" class="test fail done" />

+0

爲什麼是雙'toggleClass'不那麼優雅?它比任何你得到的答案都更可讀... – Cerbrus 2018-01-30 09:38:39

+0

這是一個5歲的問題。我可能只是好奇:) – mplungjan 2018-01-30 09:50:22

回答

0

這?

$("#field").removeClass('pass fail').addClass(someBoolean ? 'pass' : 'fail'); 
+0

更接近:)讓我們看看是否有其他人有建議,你的是迄今爲止最好的 – mplungjan 2013-03-10 08:11:14

0

只要做到這一點。

$('#field').attr('class', someBoolean ? 'pass' : 'fail'); 

.attr('class', 'newClass')是相當於element.className = 'newClass';

+0

我知道我可以做到這一點,但這取代了課堂。正如我所提到的,我希望能夠在類屬性中擁有其他類,這就是addClass,removeClass和toggleClass尊重 – mplungjan 2013-03-10 08:00:21

-1

你可以試試這個:

$('.submit-button')[ someBoolean ? 'addClass' : 'removeClass' ]('active')

+1

@mplungjan它的創建一個MCVE的問題的工作,以便人們可以更容易地回答這個問題 – WhatsThePoint 2018-01-30 09:35:59

+0

@WhatsThePoint完成 – mplungjan 2018-01-30 09:47:21

+0

它不工作,因爲我猜測。 '$(「#field」)[pass? 'addClass':'removeClass']('pass')'不會切換兩個類 – mplungjan 2018-01-30 09:49:14