我的代码中有 4<div>
秒。我使用 JavaScript 来显示和隐藏它们。现在它变得越来越难以管理,因此我需要检测一个特定<div>
的是否显示或隐藏。我不确定如何做到这一点,用哪种方式编码?JQuery 或 Jqtouch 都可以。谢谢
问问题
2392 次
5 回答
3
如果您可以使用 jQuery 来帮助您,您可以使用:
$( "yourDivSelector" ).is( ":visible" );
没有 jQuery,你可以这样做:
alert( isVisible( "divOne" ) );
alert( isVisible( "divTwo" ) );
alert( isVisible( "divThree" ) );
function isVisible( elementId ) {
var element = document.getElementById( elementId );
return window.getComputedStyle( element, null ).display != "none";
}
jsFiddle:http: //jsfiddle.net/davidbuzatto/N3wf6/
更多关于window.getComputedStyle
这里:https ://developer.mozilla.org/en-US/docs/DOM/window.getComputedStyle
于 2012-08-24T15:22:42.133 回答
3
这个功能似乎做你想做的事。它检查不显示和隐藏可见性。
function isVisible(obj)
{
if (obj == document) return true
if (!obj) return false
if (!obj.parentNode) return false
if (obj.style) {
if (obj.style.display == 'none') return false
if (obj.style.visibility == 'hidden') return false
}
//Try the computed style in a standard way
if (window.getComputedStyle) {
var style = window.getComputedStyle(obj, "")
if (style.display == 'none') return false
if (style.visibility == 'hidden') return false
}
//Or get the computed style using IE's silly proprietary way
var style = obj.currentStyle
if (style) {
if (style['display'] == 'none') return false
if (style['visibility'] == 'hidden') return false
}
return isVisible(obj.parentNode)
}
示例用法
if (isVisible(document.getElementById("myelement"))) {
// Element is visible.
}
于 2012-08-24T15:34:10.490 回答
1
因为我不确定 100% 你在做什么隐藏/显示......
但是如果您设置一个属性,例如显示
然后..
function elementhidden()
{
1. Get your element
2. Check the elemnet atrribute status
3. If its hide value then return true
4. If its show value then return false
}
提供一个你在做什么的例子,这样我就可以编写代码了..
于 2012-08-24T15:24:52.687 回答
0
您可以使用document.elementFromPoint(x, y)作为 x 和 y 传递 div 的位置并检查它是否是好对象。
这假设没有其他元素覆盖 div 的左上角。
这可能取决于您所说的“可见”:“完全可见”?“至少有点可见”?由于滚动位置而不可见的视口部分怎么办?如果浏览器窗口部分位于屏幕之外(这可能很棘手)?
于 2012-08-24T15:26:41.123 回答
-1
取决于 div 的隐藏方式,但您可以使用
if(document.getElementById("myDiv").style.display=="none"){
//do something
}
于 2012-08-24T15:27:27.030 回答