2013-03-10 61 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