Использование .не правильно JQuery - PullRequest
0 голосов
/ 16 марта 2020

Я немного озадачен, почему моя простая функция .not здесь не работает.

    <section class='main'>
    <p class='tweets'></p>
      <div class='tweet'>
        <p class='time'>
        <p class='user'>
        <p class='message'>

Если я запускаю этот код .not

$('.tweet').not($('.message')).hide();

Каждый ребенок для твита исчезает , Насколько я понимаю, когда он запускается, я прошу его посмотреть на мой селектор class=tweet и спрятать каждого потомка, который не соответствует критериям class=message, что должно привести к отображению элементов для class=message на моем HTML документ и каждый другой ребенок, скрытый в этом случае class=time and class=user. Мое понимание этого исполнения неверно?

Ответы [ 2 ]

1 голос
/ 16 марта 2020

.not смотрит на элементы, выбранные селектором.

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

//$('.tweet *').not('.message').hide();
$('p').not(($('.time'))).hide();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section class='main'>
  <p class='tweets'></p>
  <div class='tweet'>
    <p class='time'>10 AM</p>
    <p class='user'>user123</p>
    <p class='message'>message</p>
  </div>
</section>

или

$('.tweet').children().not('.message').hide();

или

$('.tweet > p').not('.message').hide();

или

$('.tweet > p').not($('.message')).hide();

или

$('.tweet > p').not($('.message')[0]).hide();
1 голос
/ 16 марта 2020

.not() удалить элементы из набора соответствующих элементов . Поскольку message является дочерним элементом твит , ваш запрос не может обнаружить элемент.

Вы должны использовать :not() с .find().

Демо:

$('.tweet').find(':not(.message)').hide();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section class='main'>
  <p class='tweets'></p>
  <div class='tweet'>
    <p class='time'>10 AM</p>
    <p class='user'>user123</p>
    <p class='message'>message</p>
  </div>
</section>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...