获取不显示元素的计数
Getting count of display none elements
var checkLeft= $('#left .module:hidden');
if(checkLeft) {
if($('.resetLeft').length) {
left.prepend('<span class="resetLeft">Reset Left Widgets</span>');
}
}
试图让这个正常工作有点麻烦。因为我真的不想要:hidden
伪类,因为我相信IE不支持这个。基本上我创建了一个函数,这段代码就在里面。当它运行时,它检查父元素#left
是否有.module
类的任何display:none
子元素,我使用了过滤函数,并且必须隐藏两个元素才能正确响应。有什么好主意吗?
这是一个启动的JSBIN
http://jsbin.com/upuwix/1/edit(部分)jQuery的关键在于它可以跨浏览器工作。:hidden
在所有浏览器中都可以作为jQuery选择器——doco说它"是一个jQuery扩展,不是CSS规范的一部分"。
然而,你的if
测试是不正确的:
if(checkLeft) {
…总是为真,因为您正在测试的是jQuery对象本身——对象总是为真。您需要测试.length
,看看是否有任何元素匹配您的选择器:
if (checkLeft.length) {
在这行之后,你已经使用了同样的技术:
if($('.resetLeft').length) {
…除了这一行,你的逻辑颠倒了——如果长度为0,也就是说,如果还没有.resetLeft
元素,你希望它为真,所以要么在条件的开头添加!
,要么测试.length === 0
:
if(!$('.resetLeft').length) {
最后,left.prepend(...)
不起作用,因为没有left
变量。要么定义它,要么使用$('#left').prepend(...)
。
更新的演示:http://jsbin.com/upuwix/3/edit
相关文章:
- 在JavaScript中,如何修复元素显示和变量创建之间的初始差异
- 使用漂亮的照片点击另一个元素显示图像
- 我将如何在 HTML 中将数组中的所有元素显示为可点击的对象
- 使元素显示在最小屏幕大小上
- 更好的做法是通过CSS类或直接(通过DOM)修改HTML元素显示
- 如何在YouTube视频前制作元素显示
- 使隐藏元素显示 X 秒
- 如果元素显示:无;在媒体查询中,它们是否仍然加载
- 无法为每个元素显示高图
- 如何使用 jQuery 逐个元素显示
- 使用 jQuery 画布元素显示 Hiddin Div
- '李'mouseover事件被child'a'元素显示块
- JQuery元素显示/隐藏和控制流
- D3在工具提示上将内部列表的元素显示为不同的行
- AngularJS-动态创建<text区域>使用ngSanitize不会't显示(其他元素显示)
- 如何根据单击的元素的位置使元素显示在右侧或左侧
- 响应元素显示:无;在移动宽度,然后通过javascript按钮返回,但显示的链接断开:block;
- 当我再次单击时,它显示none,高度回到0px,但里面的元素显示,不显示none或离开页面
- 将一个元素显示在另一个元素的顶部,并在其上禁用鼠标悬停事件
- reactjs:为什么在render中定义的一些dom元素显示两次