Javascript 使用this和not组合两个jQuery语句
我现在不得不用两个语句来解释这个问题,如果可能的话,我想把它合并成一个语句 CSS的层次结构是-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'),
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中删除该类。我最终选择了你的替代方案,因为它没有用。非常感谢您的帮助!