【问题标题】:Given a Parent Element, Testing for Certain Child Elements给定一个父元素,测试某些子元素
【发布时间】:2010-12-24 21:40:26
【问题描述】:

我有以下代码:

<table id="myTable">
    <th>Date</th>
    <th>Action</th>
</table>

var $table = $('#myTable');

在我的 JS 中有一个条件,我将向该表附加表行 (&lt;tr&gt;),但我想编写一个函数来检查是否已添加任何行。

所以我正在寻找一个布尔表达式,如果 $table 包含任何 &lt;tr&gt; 标记,则返回 true,否则返回 false。初步答案让我相信我需要使用 jQuery ':has' 选择器。

【问题讨论】:

    标签: jquery html-table parent tablerow


    【解决方案1】:

    您可以使用 :has() 选择器。您可以在括号内使用任何选择器。例如 :has(tr) 检查元素是否包含任何 tr 元素。

    【讨论】:

    • @Matti,感谢您的快速回复。你能发布一个这样的例子吗?
    • :has(tr) 就是一个例子。详细地说,要检查某个 jQuery 对象是否匹配它,可以执行 myObject.is(":has(tr)")。要选择包含行的任何表,您可以使用 $("table:has(tr)") 等等。
    • 所以听起来我要使用 $("table").is(":has(tr)")?我需要一个布尔表达式,如果表有 元素则返回 true,否则返回 false...感谢您的回复
    • @Mega Matt:试试吧。有什么问题?
    【解决方案2】:

    你可以这样做:

    jQuery("table").find("certainTr").size > 1
    

    use the :has selector

    我不是 100% 确定我理解了你的问题...如果我离开了请告诉我

    【讨论】:

    • @marcgg,我真的只是想检查父元素下是否有某个标签。我认为 :has 选择器是正确的路径。您可以使用此方法发布示例代码吗?
    【解决方案3】:
    if (jQuery('table').find('tr').size() > 0) { // has element }

    【讨论】:

    • 实际上,事后看来,这并不完全正确。大小是一个函数,它后面应该有打开/关闭括号。所以:if (jQuery('table').find('tr').size() &gt; 0) {
    • 哦,是的,我的错误。那是一个错字,会在 JS 错误控制台中被捕获。更新了修复程序。
    【解决方案4】:
    if ($('#myTable tr').length) {
    //got some tr
    }
    

    【讨论】:

      【解决方案5】:

      如果你想要做的只是如果你的表包含任何行则返回 true,如果你的表不包含任何行则返回 false,那么你可以试试这个......

      return ($("#myTable tr").length > 0);
      

      如果您要在表中始终有一个标题行,您可能希望将上述脚本中的 0 更改为 1。

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签