【问题标题】:Combining two jQuery statements using this and not使用 this 而不是结合两个 jQuery 语句
【发布时间】:2015-02-19 18:19:07
【问题描述】:

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

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');
    }
});

【问题讨论】:

  • 你对$("#optionsbox1 :checkbox")有什么期待??
  • 那部分工作正常,但取消选中另一个 .checkbox 类的复选框。我能够弄清楚如何用 +epascarello 的语法回答我原来的问题。感谢您的帮助。

标签: javascript jquery html css dom


【解决方案1】:

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

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

如果.checkbox 元素是兄弟元素的另一种方式

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

【讨论】:

  • 谢谢你,先生,我能用你提供的语法弄明白,有多个父母,所以我不得不稍微提醒一下语法,但我能够让它工作,然后结合起来声明成一行。
  • 我不确定一行有什么大不了的。一条线并不意味着更好。还有一种更好的方法,一条不需要 not()
  • 拥有多个语句并不是什么大不了的事,我只是不想有两个单独的语句,其中第一个语句将该类应用于所有 .checkbox 而第二个仅用于从 $this 父级中删除该类。我最终选择了您的替代解决方案,因为它没有使用。非常感谢您的帮助!
【解决方案2】:

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

epascarello原方案的修改版

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

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

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

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 2015-08-30
    • 1970-01-01
    • 2012-08-04
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    相关资源
    最近更新 更多