Javascript 如果条件为true,如何向jQuery元素添加类;如果条件为false,如何删除同一类?

Javascript 如果条件为true,如何向jQuery元素添加类;如果条件为false,如何删除同一类?,javascript,jquery,Javascript,Jquery,是否有一个较短的方法来执行以下操作 var select_all_checkbox = $("input.select_all"); var is_checked = select_all_checkbox.prop("checked"); if (is_checked) { select_all_checkbox.parent().addClass("selected"); } else { select_all_checkbox.parent().removeClass("

是否有一个较短的方法来执行以下操作

var select_all_checkbox = $("input.select_all");
var is_checked = select_all_checkbox.prop("checked");

if (is_checked) {
    select_all_checkbox.parent().addClass("selected");
} else {
    select_all_checkbox.parent().removeClass("selected");
}

绝对是!您可以通过编程方式在方法(addClass/removeClass)之间进行选择,并使用执行表达式时返回的方法

像这样:

var select_all_checkbox = $("input.select_all");
var is_checked = select_all_checkbox.prop("checked");

select_all_checkbox.parent()[is_checked ? "addClass" : "removeClass"]("selected");
使用,传递第二个参数(布尔值),该参数指定是否应添加类:

select_all_checkbox.parent().toggleClass("selected", is_checked);

如果有多个元素由
输入选择。请选择\u all
,但您必须对它们进行迭代:

$("input.select_all").each(function() {
    $(this).parent().toggleClass('selected', this.checked);
});

它实际上并没有产生同样的效果。我认为OP希望
被选中
布尔值自动更新自身。可能您希望在复选框更改时,通过
.change()
事件更新布尔值……因为如果类不存在,则toggleClass将始终添加该类,否则将其删除。相反,如果addClass在已经有类的元素上运行(或者如果removeClass在没有类的元素上运行),addClass/removeClass方法将不会对元素的类进行更改。@aruseni:可能我不够清楚:如果您将状态作为第二个参数传递,并且它是
true
toggleClass
将添加这些类。如果状态为
false
toggleValue
将删除这些类。这与状态为
true
时调用
addClass
和状态为
false
时调用
removeClass
完全相同<当状态作为第二个参数传递时,code>toggleClass不会交替切换类。哇。事实上,你是对的,这确实像预期的那样有效。非常感谢你!这是在coffeescript中:$('.some selector')[如果选中,则选择'addClass'或'removeClass']“selected”,虽然没有使用
切换类
那么干净,但这仍然是一个非常简洁的方法