#jquery
#jquery
Вопрос:
Используя jQuery, как я могу выбрать все blockquote
элементы, у которых нет cite
элемента внутри и у которых нет класса testClass
, и добавить этот класс к этим элементам blockquote. Например, он выберет этот blockquote (и добавит класс testClass
):
<blockquote>
<p>
Lorem ipsum...
</p>
</blockquote>
но не это (потому что у него уже есть этот класс):
<blockquote class="testClass">
<p>
Lorem ipsum...
</p>
</blockquote>
и не это (потому что у него есть cite
элемент):
<blockquote>
<cite>Originally posted by John Doe:</cite>
<p>
Lorem ipsum...
</p>
</blockquote>
Ответ №1:
Вы можете использовать .filter
, !
(не) , hasClass
, find().length
$('blockquote').filter(function(){
return !$(this).hasClass('testClass') amp;amp; !$(this).find('cite').length
}).addClass('testClass');
.testClass{
background : red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<blockquote>
<p>
Lorem ipsum...
</p>
</blockquote>
<blockquote class="testClass">
<p>
Lorem ipsum...
</p>
</blockquote>
<blockquote>
<cite>Originally posted by John Doe:</cite>
<p>
Lorem ipsum...
</p>
</blockquote>
Ответ №2:
$('blockquote').each(function(i, item) {
var $item = $(item);
if( !$item.hasClass('testClass') amp;amp; !$item.find('cite').length )
{
$item.addClass('testClass');
}
});