代码之家  ›  专栏  ›  技术社区  ›  surfbird0713

使用jQuery通过if语句和addClass隐藏div

  •  3
  • surfbird0713  · 技术社区  · 12 年前

    我有一个通过插件生成的div,当disabled=true时,我想隐藏它。在阅读了SO上的帖子后,我想也许我可以使用.attr找到disabled=true,然后添加Class用CSS display:none隐藏它。我无法编辑插件或源代码,所以我希望我可以通过我们的CMS从前端完成这项工作。我是一个jQuery初学者,所以也许这是不可能的?

    I want to hide the disabled arrows in the carousel at the bottom of this page 。插件生成HTML后,HTML看起来是这样的:

            <div class="jcarousel-prev jcarousel-prev-horizontal jcarousel-prev-disabled jcarousel-prev-disabled-horizontal" style="display: block;" disabled="true"></div>
    

    我已经将此代码添加到CMS中,但它不起作用。我在控制台中没有看到任何错误;这是正确的方法吗?我的语法有问题吗?

            if ($('div.jcarousel-prev.jcarousel-prev-horizontal.jcarousel-prev-disabled.jcarousel-prev-disabled-horizontal').attr('disabled', true)){
                $(this).addClass("arrow");
            }
    

    提前感谢您的帮助。

    5 回复  |  直到 12 年前
        1
  •  2
  •   Community CDub    7 年前

    这个 :disabled 选择器只能处理表单字段,不能处理任何元素。除了形式之外,在任何事情上使用它可能都有点不标准;使用“true”的值更不标准,它也应该被“禁用”(请参阅 Correct value for disabled attribute ). 因此,与其使用 :已禁用 ,编写的代码需要使用选择器 [disabled="true"] .

    您的选择器可能不需要使用整个类列表——列表上的最后一个类可能就是您所需要的目标。

    然而,我会简单地使用CSS来做你想要做的事情 arrow 类,将其替换为 .jcarousel-prev-disabled-horizontal .

    如果您仍然想使用JavaScript执行“禁用”路线,请使用以下内容,这也将取代对If语句的需要:

    $('.jcarousel-prev-disabled-horizontal[disabled="true"]').addClass('arrow');
    
        2
  •  0
  •   BenM    12 年前

    你的 if() 语句实际上是为 div 元素,而不检查其状态。您应该按如下方式更新代码:

    if ($('div.jcarousel-prev.jcarousel-prev-horizontal.jcarousel-prev-disabled.jcarousel-prev-disabled-horizontal').attr('disabled'))
    {
                $(this).addClass("arrow");
    }
    
        3
  •  0
  •   Stephen Binns    12 年前

    是的,你实际上只是在设置禁用属性

    您需要检查元素是否已禁用

    .is(':disabled')

        4
  •  0
  •   Amit    12 年前

    试试这个,

    $(document).ready(function(){
        if ($('.div.jcarousel-prev .jcarousel-prev-horizontal .jcarousel-prev-disabled .jcarousel-prev-disabled-horizontal').is(':disabled')){
            $(this).addClass("arrow");
        }
       });
    
        5
  •  0
  •   Eli    12 年前

    您需要进行比较而不是赋值:

    if ($('div.jcarousel-prev.jcarousel-prev-horizontal.jcarousel-prev-disabled.jcarousel-prev-disabled-horizontal').attr('disabled')) {
        $(this).addClass("arrow");
    }