JQuery найти элемент в переменной или объект без идентификатора, а затем скрыть - PullRequest
0 голосов
/ 30 декабря 2018

Как найти tr в переменных данных без любого дочернего 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();

Может кто-нибудь предложить способ, как правильно добиться этого?

Обновление / Мое решение :

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

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

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

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

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

см. Оригинальный вопрос для контекста

0 голосов
/ 30 декабря 2018

Я вижу одну вещь в вашем коде.Вы уже находитесь в корневом элементе, поэтому вы не сможете найти его с помощью селектора: .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>
...