Jquery 为什么我的心是隐藏的<;tr>;不是真的隐藏吗?
我有一个从经典asp生成的简单html标记:Jquery 为什么我的心是隐藏的<;tr>;不是真的隐藏吗?,jquery,visible,Jquery,Visible,我有一个从经典asp生成的简单html标记: <table> <tr class="trClass"> <td>Hello </td> </tr> <tr class ="trClass"> <td>World!</td> </tr> </table> 你好 世界! 如果我使用Jquery将属于Hello的tr设置为hide(),它将隐藏
<table>
<tr class="trClass">
<td>Hello </td>
</tr>
<tr class ="trClass">
<td>World!</td>
</tr>
</table>
你好
世界!
如果我使用Jquery将属于Hello的tr设置为hide(),它将隐藏。好!
但是,当我使用这个$('.trClass:visible').each(function(){alert('visible')})时;
它两次显示输出“可见”
为什么会这样
我这里的问题是,我用一个选择框过滤列上的表。但是在过滤之后,我需要对表中可见的行执行一些计算,但是我现在得到了所有的行
有什么想法吗
/Daniel可见的选择器不测试要使用的显示样式属性: …如果元素的CSS显示为 “无”,或其任何父/祖先 元素的显示为“无”,或者 元素的宽度为0,元素的 高度为0时,将创建一个元素 据报道是隐藏的 这些选项将正确选择您的可见行:
$('.trClass:not(:hidden)').each(function() {
alert('visible');
});
或:
或:
hide
将样式设置为display=“none”
。jQuery 1.3.2的版本还说:
在jQuery 1.3.2中,元素是可见的
如果其浏览器报告了偏移网络宽度或
越界大于0
因此,我猜在这种情况下,
:visible
选择器错误地不匹配任何内容,因为根据执行的计算,行没有占用任何空间,尽管它们的CSSdisplay
属性没有设置为none
。相反,:hidden
正确地将元素与style=“display:none”
匹配,因此测试非:hidden
元素效果很好。不确定这是否重要,但不隐藏()设置display:none代码>和不可见:隐藏?这意味着隐藏的行仍然可见,只是没有显示…您的trClass很可能与显示冲突:无.hide()设置。
当标记同时具有“类属性”和“样式属性”时,将应用“仅启用”。
你应该把你的trClass分成几个部分,然后从中取出display:stuff.。它在1.3.2中被破坏了,但是现在
:
我们已经在寻找“tr”的案例
在IE中也有同样的问题
您想知道……您可以提供演示页面plz吗?:hidden
和:visible
都不检查显示属性。自己检查源代码:这是一个合法的错误,根据Resig hights:Nice edit(删除downvote),尽管您仍然暗示:hidden
检查display
属性。@spx2:1.3.2中的回归。以前的版本检查了显示
属性。1.3.2使用技巧检查元件的[缺少]尺寸。请参阅@karim79的第一句话。@spx2-和往常一样,这是程序员的话。
$('.trClass').each(function() {
if(!$(this).is(':hidden')) {
alert('visible');
}
});
$('.trClass').filter('not:(:hidden)').each(function() {
alert('visible');
});