三元或者terser setClass等价

时间:2013-03-10 06:03:03

标签: jquery ternary-operator

我们有addClass,removeClass,toggleClass

什么是jQuery等同于

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

但是使用保留现有类的方法之一?

我最接近的是我认为不那么优雅

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

或使用vars

$("#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" />

3 个答案:

答案 0 :(得分:0)

就这样做。

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

.attr('class', 'newClass')相当于element.className = 'newClass';

答案 1 :(得分:0)

此?

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

答案 2 :(得分:-1)

你可以试试这个:

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