我想取消选中具有特定类的所有复选框,但刚刚选中的复选框除外。
function PizzaToppings_OptionValueChanged(checkboxElement) {
if ($(checkboxElement).attr("checked")) {
if($(checkboxElement).hasClass('cheese_toppings'))
{
// This will uncheck all other "cheese_toppings" but I want the newly selected item "checkboxElement" to remain checked.
$('input:checkbox.cheese_toppings').attr('checked', false);
}
}
}
上面的代码将取消选中所有“cheese_toppings”,包括刚刚选择的那个。我不想重新检查刚刚选择的那个或者将召回事件。
我认为最好的解决方案是从$('input:checkbox.cheese_toppings')
返回的列表中删除“checkboxElement”,然后将.attr('checked', false)
设置为该列表。但我不确定如何从列表中删除checkboxElement。
答案 0 :(得分:6)
$('input:checkbox.cheese_toppings').not(checkboxElement).attr('checked', false);
请参阅jQuery文档:.not()
答案 1 :(得分:2)
试
$('input:checkbox.cheese_toppings').not( checkboxElement ).attr('checked', false)
答案 2 :(得分:0)
//when the page is loaded
$(function() {
//select all checkboxes with class cheese_topping
var allToppingBoxes = $('input[type=checkbox].cheese_topping')
//when one of these is clicked
allToppingBoxes.click(function() {
//if the box was unchecked do nothing
if(!$(this).attr('checked'))
return;
//select all except this one that was clicked
allToppingBoxes.not(this)
.attr('checked', false); //uncheck all
});
});
另请注意,您可能希望使用jquery prop而不是attr。 您可能还想查看:checked pseudoclass(虽然IE8 down不支持它)