2012-03-15 12 views
1

我有一个表有几列没有必需的字段。这个页面有一个机制,可以过滤掉客户端正在执行的表中的内容,我使用jQuery来选择要隐藏的元素,但事情看起来并不像预期的那样工作。如果我通过一些字符串进行筛选,它会正常工作,但空筛选器的行为应仅保留那些列中具有空单元格的行。:空选择器不工作在某些单元格中的锚柱?

示例表:

<table> 
    <tr> 
    <td class="firstCol">Some text</td> 
    <td class="secondCol"><a href="##">A link!</a></td> 
    </tr> 
    <tr> 
    <td class="firstCol"></td> 
    <td class="secondCol"></td> 
    </tr> 
</table> 

为我做这样的事情的第一列:

$('table tr').find('.firstCol:not(:empty)').parent().hide(); 

这适用于该列。所有可以看到的都是第一列没有内容的行。

如果我做的:

$('table tr').find('.secondCol:not(:empty)').parent().hide(); 

从第2列的所有行被删除。是否有一种通用的方式来选择此选项,以便仅在没有内容时才返回匹配此行为的<td>?这并不重要,但它们是从查询中生成的行,并且我已经在浏览器中进行了检查,并且该单元没有内容。

在此先感谢。

回答

1

我不知道我理解你的问题。看看这个jsFiddle。它正是你想要它做的。

$('table tr').find('.firstCol:not(:empty)').parent().hide(); 

如果在firstCol TD的内容,然后隐藏包含它的TR(包括secondCol TD,不管它是否有内容或没有)。

$('table tr').find('.secondCol:not(:empty)').parent().hide(); 

如果在secondCol TD的内容,然后隐藏包含它的TR(包括firstCol TD,不管它是否有内容或没有)。

随着你提供的HTML,这两个JS片段最终做同样的事情。他们隐藏了第一个tr。

+0

看,它正在我期望的小提琴方式工作。我不确定为什么这不适合我的情况。让我进一步调查,我可能会有更多的信息。 – Rig 2012-03-15 20:19:06

+0

好吧,这似乎在IE8中正常工作,但在Chrome 17或Firefox 11中无法正常工作。哇...第一次IE执行过程像我期望的那样:P – Rig 2012-03-15 20:29:33

+0

我在FF11和Safari5.1上运行代码。在两个浏览器中都能完美运行。 – Steve 2012-03-15 20:33:30

1

虽然@Steve在功能上是正确的,但它应该适用于所有元素Chrome开发人员工具中不可见的是Chrome和FireFox jQuery在评估:empty哪些Internet Explorer不支持时发现的大量字符。我想我应该分享我发现的东西。

是决定细胞是否应该有内容的条件代码看起来像:

<td class="secondCol"> 
    <CFIF firstColVal NEQ ""> 
     <a href='##' value="#firstColVal#"></a> 
    </CFIF> 
</td> 

查看HTML输出在Chrome没有内容的单元格显示为:

<td class="secondCol"></td> 

当我复制并粘贴它,同时在Chrome中检查它我结束了与此:

<td class="secondCol"> 
             </td> 

InternetExplorer在考虑:empty时忽略了新行和空格,而Chrome和FireFox则没有。这是与jQuery 1.7.1。

相关问题