Удалить элемент в Jquery, если у ближайшего href есть некоторый класс - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть меню, где у LI иногда есть img, а иногда нет.

<ul id="manufact">
<li>
<a href="" class="aaa">
<img>
<span>First name</span>
</a>
</li>
<li>
<a href="" class="bbb">
<img>
<span>Second name</span>
</a>
</li>
</ul>

Когда в href есть класс "aaa", я должен удалить только первое слово в span. А когда "bbb" - нет, но удалите img (потому что в этом случае у меня нет реального файла .jpg для отображения, а в Safari есть пустое уродливое "?").

Поэтому я пытаюсь что-то вроде этого

$('#manufact li > a span').each(function(){
var element = $(this);
if($(this).closest("a").is( ".aaa")){
    element.text(element.text().split(' ').splice(1).join(' '));
}
// It works
else {
   Here I failed to put some JS to delete top Img.
}
});

Мой желаемый результат (играл с ближайшим, предыдущим, родительским и т. Д. c, но не удалось)

<ul id="manufact">
<li>
<a href="" class="aaa">
<img>
<span>name</span>
</a>
</li>
<li>
<a href="" class="bbb">
<span>Second name</span>
</a>
</li>
</ul>

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Вы можете использовать что-то вроде:

$('#manufact li a.aaa span').each(function(){
    var element = $(this);
    element.text(element.text().split(' ').splice(1).join(' '));
});

$('#manufact li a.bbb img').each(function(){
    $(this).remove();
});
1 голос
/ 19 апреля 2020

Вы можете попробовать следующее:

 $('#manufact li > a span').each(function() {
   var element = $(this);
   if ($(this).closest("a").is(".aaa")) {
     element.text(element.text().split(' ').splice(1).join(' '));
   }
   else if ($(this).closest("a").is(".bbb")) {
     $(this).prev("img").remove();
   }
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...