由於隱藏可見性仍佔用空間,jQuery認爲它們可見。
下面是引自the docs:
元素被認爲是可見的,如果他們消耗在文檔中的空間。可見元素的寬度或高度大於零。
帶有visibility:hidden
或opacity: 0
的元素被視爲可見,因爲它們仍佔用佈局空間。
如果要檢查元素的visibillity
沒有設置爲hidden
,使用此:
if ($('#test h3').css('visibility') == 'visible') {
alert('visible');
}
要檢查的祖先太,使用此:
var visible = true;
$('#test h3').parents().addBack().each(function() {
if ($.css(this, 'visibility') != 'visible') return visible = false;
});
if (visible) {
// do whatever...
}
你可以抽象所有到一個可重用filter expression:
jQuery.expr[':']['visible-real'] = function(el) {
var visible = true;
$(el).parents().addBack().each(function() {
if ($.css(this, 'visibility') != 'visible') return visible = false;
});
return visible;
};
然後你可以用它當你需要它,如下所示:
if ($('#test h3').is(':visible-real')) {
alert('visible');
}
這裏的小提琴:http://jsfiddle.net/3LGm7/
你的代碼是完全的語法錯誤。請糾正它們。 –
$('#test h3')... – Eric
@SethMcClaine - 他不是一個傢伙,只是指出顯而易見的事實。 – adeneo