使用 this 和 not 组合两个 jQuery 语句

Combining two jQuery statements using this and not

我目前不得不为此使用两个语句,如果可能的话,我想将其合并为一个语句。

CSS 的层次结构是 -

div#optionsbox1
    div.checkbox
      a.help
    div.checkbox
      a.help

我想将 .addClass('readOnly') 添加到未单击 a.help 的 div.checkbox。因此,如果我在第一个 div.checkbox 中单击 a.help,我希望在第二个 div.checkbox 中应用 .addClass('readOnly') ,反之亦然。

这是我现在使用的当前语法来完成此操作。

$("#optionsbox1 .checkbox").addClass('readOnly');
$(this).parent(".checkbox").removeClass('readOnly');

这是整个函数 -

$(this).click(function()
{
    if($(this).attr('checked')){
        if($(this).hasClass('readOnly')){
            $(this).removeClass('readOnly');
        }
        $("#optionsbox1 :checkbox").not(this).prop('checked',false);
        $("#optionsbox1 .checkbox").addClass('readOnly');
        $(this).parent(".checkbox").removeClass('readOnly');
        $(this).prop('checked',true);
    } else {
        $(this).prop('checked',false);
        $("#optionsbox1 :checkbox").removeClass('readOnly');
    }
});

我不确定将它转换为一个会带来什么好处,但基本思想是使用 not() 从集合中删除元素。

var clickedBox = $(this).parent(".checkbox");
var allBoxes = $("#optionsbox1 .checkbox");
allBoxes.not(clickedBox).addClass('readOnly');

另一种方式,如果 .checkbox 元素是兄弟姐妹

$(this).parent(".checkbox").siblings().addClass('readOnly');

通过 +epascarello 的示例和一个小改动,我能够弄清楚如何将我的两个语句合并为一个。

epascarello 原始解决方案的修改版本

$("#optionsbox1 .checkbox").not($(this).parent('.checkbox')).addClass('readOnly');

我最终使用的 Epascarello 的解决方案 -

$(this).parent(".checkbox").siblings(".checkbox").addClass('readOnly');