【问题标题】:Greater than selector in jquery?大于jquery中的选择器?
【发布时间】:2010-01-09 21:24:14
【问题描述】:

我有一个表,其中有一些行。

这是我的表格的示例,表格行数少很多。

<table>
 <tr>
   <td>bob</td>
   <td class="CheckThis">0 </td>
 </tr>
 <tr>
   <td>Jim</td>
   <td class="CheckThis">3</td>
 </tr>
</table>

现在我想查看第二个表格单元格并返回值大于 0 的行。

所以在我上面的例子中,它会得到包含“3”的整行,因为它大于零。

我没有看到任何比 jquery 做得更好的部门,但我可能错过了。

谢谢

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    试试这个:

    $("tr").filter(function() {
        return parseInt($(this).children("td.CheckThis").text(), 10) > 0;
    })
    

    这将为您选择每个具有 TD 子元素的 TR 元素,该子元素的类 CheckThis 的内容大于 0。

    【讨论】:

    • 为什么是 .text()?我想我以前从未使用过这个选择器。我通常使用 val() 或 html()。有什么区别?文本是否像实际文本而不是 html 标签?
    • val() 仅适用于 input 元素:docs.jquery.com/Attributes/val html() 返回/设置 html,而不是文本。 text() 转义 HTML。这里不需要html(),因为没有 HTML 内容。
    • @chobo2: val 用于输入元素,html 返回 HTML 内容(标记),而 text 仅返回文本内容。详情请查看 jQuery 文档:docs.jquery.com
    【解决方案2】:

    您可以为此使用filter() 函数。

    例如

    var tds = $('td.CheckThis').filter(function() {
        return parseInt($(this).text()) > 0;
    });
    

    更新:在再次阅读问题后,您实际上想要选择包含相关tdtr 元素,因此不仅是td。在这种情况下,请查看 Gumbo's answer 以获取另一个正确的代码示例。

    【讨论】:

    • 始终建议包含 parseInt 的数字基数以避免意外进入八进制模式:parseInt($(this).text(),10)
    • 仅当数字以0 开头时,我在他的示例中没有看到。
    • 但这不会选择行。
    • @BalusC: 好吧,你可以通过应用parent 来获得你的答案来获得父母:var trs = tds.parent();
    【解决方案3】:

    当然,gt 应该这样做。查看Selectors/gt的文档

    编辑:哦,你说的是元素的 HTML 中的值?您可能必须设置一个带有过滤器或其他东西的 .each 循环。抱歉,我会检查一下。

    【讨论】:

    • 这是按索引而不是按内容选择的。
    • 是的,刚刚注意到。如果可能的话,我会删除我的帖子。
    【解决方案4】:
    var list = [];
    $("table").find("tr td:eq(1):not(:contains('0'))").each(function(i,val){
        list.push($(this).parent()); //add TR
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多