jquery .eheat () с несколькими селекторами - Skip, затем. EMPTY () элементы
-
21-09-2019 - |
Вопрос
Я хотел бы удалить все соответствующие элементы, но пропустить первый экземпляр каждого матча:
// Works as expected: removes all but first instance of .a
jQuery ('.a', '#scope')
.each ( function (i) {
if (i > 0) jQuery (this).empty();
});
// Expected: removal of all but first instance of .a and .b
// Result: removal of *all* instances .a and .b
jQuery ('.a, .b', '#scope')
.each ( function (i) {
if (i > 1) jQuery (this).empty();
});
<div id="scope">
<!-- Want to keep the first instance of .a and .b -->
<div class="a">[bla]</div>
<div class="b">[bla]</div>
<!-- Want to remove all the others -->
<div class="a">[bla]</div>
<div class="b">[bla]</div>
<div class="a">[bla]</div>
<div class="b">[bla]</div>
...
</div>
Какие-либо предложения?
- С использованием
jQuery()
скорее, чем$()
из -за конфликта с кодом «устаревшего» - С использованием
.empty()
потому что.a
содержит JS, я хотел бы отключить - Застрял с jQuery 1.2.3
Спасибо!
Решение
Попробуйте:
$('.a:gt(0), .b:gt(0)').remove();
Я не уверен, что объединить их в один селектор возможно с :gt()
, это может изменить прицел и удалить их все после первого .a
.
Другие советы
Похоже, ваш HTML неверен. Я изменил его на следующее:
<div id="scope">
<!-- Want to keep the first instance of .a and .b -->
<div class="a">[bla]</div>
<div class="b">[bla]</div>
<!-- Want to remove all the others -->
<div class="a">[bla]</div>
<div class="b">[bla]</div>
<div class="a">[bla]</div>
<div class="b">[bla]</div>
...
</div>
Тогда это казалось сработало:
jQuery('div#scope div.a').not(':first').empty();
jQuery('div#scope div.b').not(':first').empty();
Не связан с StackOverflow