0

假设我有 2 个元素,div1 和 div2。当我点击 div1 时,div2 应该.toggleClass()visibility=hidden和之间visibility=visible。这工作正常。但是当我尝试这个时:

if($('#div2').css('visibility') == 'hidden') {
$('#div1').replaceWith('<span> Duh </span>');
}

什么都没有发生。如果我改成'hidden'它就'visible'可以了。但这不是我想要的。我知道当使用可见性=隐藏时,元素仍然被认为是可见的,但是不应该.css('visibility') == 'hidden'检查元素的样式是否设置为可见性=隐藏?在我的情况下应该是真的。

我也试过

if($('#div2').hasClass('visHidden')) {
$('#div1').replaceWith('<span> Duh </span>');
}

但什么也没有发生。

问题可能是当 DOM 加载时没有设置 visHidden 和 visVisible 类?因为如果单击元素,我只使用 jQuery 设置它们。如果是这种情况,有没有办法绕过它?而且我不能使用显示属性。

4

2 回答 2

-1

您应该尝试检查可见性.is()的方法。jquery

$(element).is(":visible") // Checks for display:[none|block], ignores visible:[true|false]

在你的情况下,

if(!$('#div2').is(":visible")) {
    $('#div1').replaceWith('<span> Duh </span>');
}
于 2013-10-02T07:35:32.237 回答
-1

这是你的答案

    if($('#div2').is(':visible')) {....}
于 2013-10-02T07:35:39.353 回答