如何使用 . hide () 、.show () 或.toggle () 来切换元素的可见度 ?
如果元素可见或隐藏, 我如何测试 ?
如何使用 . hide () 、.show () 或.toggle () 来切换元素的可见度 ?
如果元素可见或隐藏, 我如何测试 ?
当前回答
if($('#id_element').is(":visible")){
alert('shown');
}else{
alert('hidden');
}
其他回答
有很多方法可以检查元素是否可见或隐藏在jquery中。
demo demo html 例如引用
<div id="content">Content</div>
<div id="content2" style="display:none">Content2</div>
使用可见度过滤选择器$( 元素: 隐藏) 或$( 元素: 可见)
$( 元素: 隐藏 ) : 选择隐藏的所有元素 。 例如 : $( 内容 2: 隐藏 ) show (); $( 元素: 可见 ) : 选择可见的所有元素 。 例如 : $( 内容: 可见 ) . css ( “ 颜色 ” , “ ee ” ) ;
见http://api.jquery.com/类/选择者/visibility-filter-selectors/
正在过滤
Example:
$('#content').is(":visible").css('color', '#EEE');
Or checking condition
if ($('#content').is(":visible")) {
// Perform action
}
见http://api.jquery.com/is/
.is(":not(':hidden')") /*if shown*/
但如果元素的 css 和下面一样呢?
.element{
position: absolute;left:-9999;
}
因此,对于堆叠溢出问题的答案是,如何检查元素是否在屏幕之外,也应当考虑。
当对 : hidden 选择器在 jquery 中测试元素时,应考虑一个绝对定位元素可以被确认为隐藏,尽管其子元素是可见的。
虽然仔细看一看拼图文件能提供相关资料:
由于以下几个原因可视为隐藏要素:[.]其宽度和高度明确定为0。 [.]
因此,这实际上对框模型和元素的计算样式是有道理的。即使宽度和高度没有被明确设定为0,它们也可以被隐含地设定为0。
以下列实例为例:
控制台. log( $ ('. foo') ) ; // true control. org ($ ('.bar') ) ; / foo { 位置 : 绝对 : left: 10px; 顶层 : ff00; 位置 : 绝对 : 10px; 顶层 : 10px; 宽度 : 20px; 高度 20px; 底层 : 0000ff; } < 上层 src=" https://ajax.gogleapis.com/ahax/libs/jquery/ 2. 1.1/jquery.min.js. > & & lt;/ statict> & & & div>
jquery 3. x 的更新:
与 jquery 3 相比, 所述的行为将改变元素, 如果有任何布局框, 包括宽度为零和(或)高度的布局框, 则将被视为可见的元素 。
3 0.0 - 阿尔法1: jdidfidd with jquery 3. 0.0 - 阿尔法1:
http://jsfiddle.net/pM2q3/7/
同样的javascript代码 将会有这个输出 :
console.log($('.foo').is(':hidden')); // false
console.log($('.bar').is(':hidden')); // false
您应该考虑的另一个答案是,如果您正在隐藏一个元素, 您应该使用jquery, 而不是实际上隐藏它, 而是删除整个元素, 但是您将其 html 内容和标签本身复制为 jquery 变量, 然后您需要做的就是测试屏幕上是否有这样的标签, 使用正常的 $ (“ tagname ”) 时间长度 。