如何使用 . hide () 、.show () 或.toggle () 来切换元素的可见度 ?
如果元素可见或隐藏, 我如何测试 ?
如何使用 . hide () 、.show () 或.toggle () 来切换元素的可见度 ?
如果元素可见或隐藏, 我如何测试 ?
当前回答
有很多方法可以检查元素是否可见或隐藏在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/
其他回答
人们可以简单地使用隐藏或可见属性,例如:
$('element:hidden')
$('element:visible')
或您可以简化相同内容如下。
$(element).is(":visible")
通常当检查某物是否可见时, 您会立即直接去做其他事情。 jquery 绑链很容易做到 。
所以,如果您有一个选择器, 并且您想要在它上执行某些动作, 只有当它为可见或隐藏时, 您可以使用过滤器 (“ : 可见 ” ) 或过滤器 (“ 隐藏 ” ) , 然后将它与您想要采取的行动连接起来 。
而不是这样声明:
if ($('#btnUpdate').is(":visible"))
{
$('#btnUpdate').animate({ width: "toggle" }); // Hide button
}
或效率更高,但更丑陋:
var button = $('#btnUpdate');
if (button.is(":visible"))
{
button.animate({ width: "toggle" }); // Hide button
}
您可以在一条线内完成全部任务:
$('#btnUpdate').filter(":visible").animate({ width: "toggle" });
由于问题只涉及一个要素,本守则可能更适合:
// Checks CSS content for display:[none|block], ignores visibility:[true|false]
$(element).is(":visible");
// The same works with hidden
$(element).is(":hidden");
它与twern的建议相同,但适用于一个单一要素;它与jquery faq中推荐的算法相符。
我们用 jquery's is () 来检查选中元素与其它元素、 选择器或任何 jquery 对象的对比。 此方法沿 dom 元素绕行查找匹配, 满足已传递参数 。 如果匹配, 返回为真, 否则返回为假 。
1 支架解决办法
用于确定一个元素在jquery 中是否可见的方法
<script>
if ($("#myelement").is(":visible")){alert ("#myelement is visible");}
if ($("#myelement").is(":hidden")){alert ("#myelement is hidden"); }
</script>
在 id “ mayement” 元素中所有可见的 diiv 子元素上循环 :
$("#myelement div:visible").each( function() {
//Do something
});
被偷偷看
jquery 如何执行此特性 :
jQuery.expr.filters.visible = function( elem ) {
return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
};
· 如何检查某一元素是否在屏幕外- css
使用元素.getting clientrect () 您可以很容易地检测到您的元素是否在您的视图( 屏幕上或屏幕下) 范围内 :
jQuery.expr.filters.offscreen = function(el) {
var rect = el.getBoundingClientRect();
return (
(rect.x + rect.width) < 0
|| (rect.y + rect.height) < 0
|| (rect.x > window.innerWidth || rect.y > window.innerHeight)
);
};
然后,你们可以几种方式使用它:
// Returns all elements that are offscreen
$(':offscreen');
// Boolean returned if element is offscreen
$('div').is(':offscreen');
如果您使用角,请检查:不使用角的隐藏属性
公平而言,问题早于这一答复的日期。
而不是批评行动, 而是帮助所有仍在问这个问题的人。
确定是否可见事物的正确方式是咨询你的视觉模型;
如果你不知道这意味着什么 那你就要踏上 探索之旅 这将使你的工作变得不那么困难
以下是模型视图模型结构概览(mvvm)。
knockoutjs 是一个具有约束力的图书馆, 它能让您在不学习整个框架的情况下尝试这些 。
这里有一些刺绣代码 和可能看不到的迪夫。
<html>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.1/knockout-min.js"></script>
<script>
var vm = {
IsDivVisible: ko.observable(true);
}
vm.toggle = function(data, event) {
// Get current visibility state for the div
var x = IsDivVisible();
// Set it to the opposite
IsDivVisible(!x);
}
ko.applyBinding(vm);
</script>
<div data-bind="visible: IsDivVisible">Peekaboo!</div>
<button data-bind="click: toggle">Toggle the div's visibility</button>
</body>
</html>
注意, 切换函数不咨询 dom 以决定 div 的可见度; 它会查询视图模型 。