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”,虽然没有使用切换类
那么干净,但这仍然是一个非常简洁的方法