3

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

我想在此页面底部的轮播中隐藏禁用的箭头。插件生成后的 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");
        }

提前感谢您的帮助。

4

5 回答 5

2

选择:disabled器不适用于除表单字段之外的任何元素。在表单以外的任何东西上使用它可能有点不标准。使用“true”的值甚至更不标准,它也应该是“禁用的”(请参阅​​禁用属性的正确值)。因此:disabled,您编写的代码需要使用选择器,而不是使用[disabled="true"]

您的选择器可能不需要使用整个类列表——列表中的最后一个类可能就是您需要定位的全部。

但是,我会简单地将 CSS 用于您想要做的事情。不要arrow在样式表中包含该类,而是将其替换为.jcarousel-prev-disabled-horizontal.

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

$('.jcarousel-prev-disabled-horizontal[disabled="true"]').addClass('arrow');
于 2013-04-05T15:25:04.797 回答
0

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

if ($('div.jcarousel-prev.jcarousel-prev-horizontal.jcarousel-prev-disabled.jcarousel-prev-disabled-horizontal').attr('disabled'))
{
            $(this).addClass("arrow");
}
于 2013-04-05T15:15:45.880 回答
0

您需要比较不分配值:

if ($('div.jcarousel-prev.jcarousel-prev-horizontal.jcarousel-prev-disabled.jcarousel-prev-disabled-horizontal').attr('disabled')) {
    $(this).addClass("arrow");
}
于 2013-04-05T15:16:18.210 回答
0

是的,您实际上只是在设置 disabled 属性

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

.is(':disabled')

于 2013-04-05T15:16:25.303 回答
0

试试这个,

$(document).ready(function(){
    if ($('.div.jcarousel-prev .jcarousel-prev-horizontal .jcarousel-prev-disabled .jcarousel-prev-disabled-horizontal').is(':disabled')){
        $(this).addClass("arrow");
    }
   });
于 2013-04-05T15:17:46.543 回答