Javascript - 取消选中数组未列出的所有元素

Javascript - Uncheck all elements not listed by an array

本文关键字:元素 未列出 数组 取消 Javascript      更新时间:2023-09-26

给定一个值数组,我希望我的代码禁用与该值相关的所有元素(复选框(,并取消选中之前禁用的任何元素(复选框(。最初我的代码只是禁用了它们,并没有取消选中它们:

function allow(j, extended){
    $('[id^="'+j+'_extended_"]').attr('disabled', 'disabled');
    for (var k = 0; k < extended.length; k++) {
        $("#"+j+"_extended_"+extended[k]).attr("disabled", ""); //IE
        $("#"+j+"_extended_"+extended[k]).removeAttr('disabled'); //Other Browers
    }
}

但是,这将首先禁用每个元素,然后重新启用允许的元素。这不适用于检查/取消选中,因为它不应该检查新的,而只取消选中不再允许的那些。取消选中最后禁用的那些让其他人保持选中/取消选中的最佳方法是什么?

谢谢你的时间!

要在 jquery 中使用此方法更改对象的属性

$("#checkboxname").prop("checked","")// to uncheck
$("#checkboxname").prop("checked","checked")// to check

并在您的代码中

$("#"+j+"_extended_"+extended[k]).prop("checked", "");

我希望有用

我没有传入 的数组,我将要保留的元素启用,而是传入要禁用的元素数组。这样我也可以明确地说取消选中它们。生成的代码如下所示:

function disallow(j, extended){
    //First, allow all.
    $('[id^="'+j+'_extended_"]').attr("disabled", ""); //IE
    $('[id^="'+j+'_extended_"]').removeAttr('disabled'); //Other Browers
    //Then remove any that are not allowed.
    for (var k = 0; k < extended.length; k++) {
        $("#"+j+"_extended_"+extended[k]).attr('disabled', 'disabled');
        $("#"+j+"_extended_"+extended[k]).attr("checked", ""); //IE
        $("#"+j+"_extended_"+extended[k]).removeAttr('checked'); //Other Browers
    }
}

非常感谢那些花时间回复的人。