jQuery 在没有 id 的变量或对象中找到元素然后隐藏

jQuery find element in variable or object without id then hide

如何在变量数据中找到 tr 没有任何有 id 的子 td 然后隐藏 tr?

我有:

var data = '<table class="hours">
             <tbody>
               <tr>
                 <td id="1">text</td>
                 <td>text</td>
               </tr>
               <tr>
                 <td>text</td>
               </tr>
             </tbody>
            </table>';

在上面的例子中,第二个 tr 应该被隐藏,第一个不应该。

我试过了,但没用:

$jq(data).find(".hours tr:not([id])").hide();

任何人都可以建议正确实现此目的的方法吗?

Update/My解法:

$jq('tr').not(':has([id])').hide();

我在你的代码中看到了一件事。您已经位于根元素,因此您将无法使用选择器找到它:.hours。你可以像下面那样做:

var data = `<table class="hours">
             <tbody>
               <tr>
                 <td id="1">text1</td>
                 <td>text2</td>
               </tr>
               <tr>
                 <td>text3</td>
               </tr>
             </tbody>
            </table>`;

var $result = $(data).find('tr:not(:has([id]))').hide();

console.log( $result.closest('table')[0].outerHTML );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

$jq('tr').not(':has([id])').hide();

. 不是 - https://api.jquery.com/not/

:有 - https://api.jquery.com/has-selector/

有关上下文,请参阅原始问题