【问题标题】:Element with display:none is not counted as hidden by jQuery带有 display:none 的元素不被 jQuery 视为隐藏
【发布时间】:2018-02-02 03:12:15
【问题描述】:

我有一个最初具有 display:none 的元素。当我单击一个按钮时,会触发一个 jQuery 事件,当单击该按钮时,我的脚本会在块和无之间切换元素的显示属性。

我正在尝试使元素父级的背景根据元素是否隐藏而改变颜色。

$("#button").on('click', function(){
                if($(".hidden-content").is(":hidden")) {
                    $(".other-element").css("background-color","rgba(20,20,20,.9)");
                } else {
                    $(".other-element").css("background-color","rgba(20,20,20,0)");
                }
        })

由于某种原因,当我单击按钮切换下拉菜单时,jQuery 将 .hidden-content 视为未隐藏,即使当我检查元素时,它也会显示 .other-element { 显示:无 };

有人知道为什么会这样吗?由于隐藏是使用 jQuery 切换的,它实际上可能不会改变 .hidden-content 自己的 css,但我不明白为什么在第一次点击时这应该是一个问题。

【问题讨论】:

  • .other-element 可能有{ display: none };,但是你实际测试的.hidden-content 呢?编辑:其实没关系,你说.other-element 是父母,所以理论上.hidden-content 也应该被认为是隐藏的。
  • 我建议你切换类而不是像你正在做的那样做。您可以创建一个名为 hidden 的类,其显示属性设置为隐藏,以及其他一些其显示属性设置为块、内联或其他的类,并在单击按钮时切换类,然后测试元素是否具有“隐藏”类或其他类,并相应地设置它的背景。希望这会有所帮助。

标签: javascript jquery html css


【解决方案1】:

最简单的解决方案是向要更改其background-color 属性的元素添加一个CSS 类。看看吧:

在您的点击功能中,您可以使用jQuery 的.toggleClass() 方法在每次点击按钮时添加和删除一个CSS 类。在您的 CSS 中,您可以使用新的类选择器覆盖默认背景颜色。下面有一个例子。听起来你有自己的隐藏和显示内容的方法,所以在这个例子中,我将使用 jQuery 的 .toggle() 函数来做这件事。

我也为你创建了working example on CodePen :)

$('#button').on('click', function() {

    // The important part: add and remove the CSS class to change colors!
    $('#parent-element').toggleClass('content-on');

    // Hide and show the content element. You can do this differently of course:
    $('.content').toggle();

});

你的 CSS 看起来像这样:

#parent-element {
    background-color: rgba(20,20,20,.9);
}

#parent-element.content-on {
    background-color: rgba(20,20,20,0);
}

【讨论】:

  • 通过弹出 $(".other-element").toggleClass("colored");进入我已经放在按钮上的jquery方法。我不知道为什么这花了我这么长时间。谢谢!
猜你喜欢
  • 2014-01-08
  • 1970-01-01
  • 2019-11-03
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多