如何从jQuery选择器返回的列表中删除元素?

时间:2012-01-06 20:32:48

标签: javascript jquery

我想取消选中具有特定类的所有复选框,但刚刚选中的复选框除外。

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。

3 个答案:

答案 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不支持它)