.is("可见")& .is(":visible")以不同的方式工作

时间:2015-11-07 08:41:36

标签: javascript jquery css

我正在使用jquery可见选择器来检查子元素是否可见。但令人惊讶的是。("可见")& .is(":visible")在使用css visibility:hidden属性时显示不同的结果。当我使用.is(' visible')时,它正在警告false&使用.is(":visible")是警告的真实情况。但是在将css属性更改为display:none时,结果是一致的。这是代码。

HTML

<div id="parentEle">
    I have hidden span
    <span class="hiddenContent">
        I am hiddenContent
    </span>
</div>
<button type="button" onclick="_checkChild()">Check Child</button>

JS

function _checkChild(){
    var x= false;
    x =$("#parentEle").children(".hiddenContent").is(":visible");
    alert(x);
}

CSS

.hiddenContent{
   visibility:hidden
}

jsfiddle

你能帮忙理解这种差异吗?谢谢

3 个答案:

答案 0 :(得分:8)

#draggable { mix-blend-mode: color-dodge; } 是一个jQuery special selector,用于检查元素是否可见,这些元素可能会不时变化。 .is(":visible");是一个标准选择器,用于检查元素是否为.is("visible");,并且无法告诉您有关其可见性的任何信息。

答案 1 :(得分:1)

我会解释你.is(“:visible”)将检查该元素是否可见而.is(“visible”)将检查该元素是否为可见标记?

这意味着如果你在代码中写出这样的内容,它会给出真实的.is(“span”),因为这些文本是span标记。

答案 2 :(得分:0)

.is("visible");会检查<visible>标记,检查元素可见性的正确语法是.is(":visible");,但即使使用visibility: hidden,元素也会被视为可见或opacity: 0,因为他们仍然在布局中使用空格(请参阅https://api.jquery.com/visible-selector/)。

获得.is(":visible")==false;的唯一方法是,如果元素不使用布局中的任何空格,那么当元素的高度和宽度为0或使用{{ 1}}(最后,与将元素的宽度和高度设置为0相同)