Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用this和not组合两个jQuery语句_Javascript_Jquery_Html_Css_Dom - Fatal编程技术网

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

Javascript 使用this和not组合两个jQuery语句,javascript,jquery,html,css,dom,Javascript,Jquery,Html,Css,Dom,我现在不得不用两个语句来解释这个问题,如果可能的话,我想把它合并成一个语句 CSS的层次结构是- div#optionsbox1 div.checkbox a.help div.checkbox a.help 我想将.addClass('readOnly')添加到未单击.help的div.checkbox中。因此,如果我在第一个div.checkbox中单击a.help,我希望第二个div.checkbox应用.addClass('readOnly'),

我现在不得不用两个语句来解释这个问题,如果可能的话,我想把它合并成一个语句

CSS的层次结构是-

div#optionsbox1
    div.checkbox
      a.help
    div.checkbox
      a.help
我想将.addClass('readOnly')添加到未单击.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原始解决方案的修改版本

$("#optionsbox1 .checkbox").not($(this).parent('.checkbox')).addClass('readOnly');
我最后用的是Epascarello的解决方案-

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

您希望从
$(“#选项框1:checkbox”)
中得到什么?该部分正常工作,但没有选中另一个.checkbox类中的复选框。我能够想出如何用+epascarello的语法回答我的原始问题。谢谢你的帮助。谢谢你,先生,我能够用你提供的语法来理解它,因为有多个家长,所以我不得不稍微提醒一下语法,但我能够让它工作,然后将语句合并成一行。我不确定一行有什么大不了的。一句话并不意味着更好。还有一种更好的方法,一行不需要()有多个语句。没什么大不了的,我只是不想有两个单独的语句,其中第一个语句将该类应用于all.checkbox,第二个语句仅用于从$this parent中删除该类。我最终选择了你的替代方案,因为它没有用。非常感谢您的帮助!