Jquery :空选择器不在某些单元格中带有定位的列上工作?

Jquery :空选择器不在某些单元格中带有定位的列上工作?,jquery,jquery-selectors,Jquery,Jquery Selectors,我有一个表,其中有两列没有必填字段。这个页面有一种从客户端完成的表中过滤出内容的机制,我使用jQuery选择要隐藏的元素,但是事情似乎并没有按预期进行。如果我按某个字符串进行筛选,效果很好,但是空筛选器的行为应该只在该列中保留那些具有空单元格的行 示例表: <table> <tr> <td class="firstCol">Some text</td> <td class="secondCol"><a href

我有一个表,其中有两列没有必填字段。这个页面有一种从客户端完成的表中过滤出内容的机制,我使用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('.secondCol:not(:empty)').parent().hide();
将删除第2列中的所有行。当没有内容时,是否有一种通用方法来选择此选项以仅返回与此行为匹配的
s?这并不重要,但这些是从查询中生成的行,我已在浏览器中进行了检查,单元格中没有内容


提前谢谢。

我不确定我是否理解你的问题。看看这个。它做的正是你想要它做的

$('table tr').find('.firstCol:not(:empty)').parent().hide();
如果第一列td中有内容,则隐藏包含它的tr(包括第二列td,无论它是否有内容)

如果第二列td中有内容,则隐藏包含它的tr(包括第一列td,无论它是否有内容)


使用您提供的HTML,两个JS代码段最终都会做相同的事情。它们隐藏了第一个tr.

而@Steve在功能上是正确的,这应该适用于所有元素。在Chrome开发者工具中不可见的是Chrome和FireFox jQuery在计算
:empty
时注意到的一些字符,而Internet Explorer没有。我想我应该分享我的发现

确定单元格是否应包含内容的条件代码如下所示:

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

在没有内容的单元格中查看HTML输出,如下所示:

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

当我在Chrome中检查它时复制并粘贴它时,我最终得出以下结论:

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


InternetExplorer在考虑
:empty
时忽略了新行和空白,而Chrome和FireFox则没有。这是jQuery 1.7.1的一部分。

请看,它的工作方式与我在小提琴中所期望的一样。我不确定为什么这在我的情况下不起作用。让我进一步调查,我可能会有更多的信息。好的,这似乎在IE8中正常工作,但在Chrome 17或Firefox 11中不正常。哇…IE第一次像我期望的那样:我正在FF11和Safari5.1上运行代码。在两种浏览器中都能完美工作。你会碰巧在mac上吗?我明天会再试一次,看看是否有可能是我忽略了什么…也许是什么东西的格式不正确,IE是让它去,而Chrome和FF正在挤压它?是否有其他方法可以完成相同的任务?为了进行实验,我将与“firstCol”匹配的列的内容放在一个范围内,并且出现了相同的行为。它隐藏了所有行,而不仅仅是不包含文本的行。在这两种情况下,没有文本的单元格都不能获得span/定位。
<td class="secondCol"></td>
<td class="secondCol">
                                      </td>