Выберите первый предыдущий элемент LI

0

Это фрагмент моего кода:

<ul>
<li id="eur" class="na">EUR<br /><span class="orgic ui-icon ui-icon-circle-close">.</span><span class="orgic ui-icon ui-icon-help">.</span></li>
</ul>

$("span.ui-icon-help").click(function () {
   alert($(this).prevAll("li").attr("id"));
});

Мне нужно получить идентификатор первого

элемент, предшествующий тому, на который мы нажимаем, т.е. 2-й пролет с классом ui-icon-help - он должен вызывать предупреждение "eur".

Этот код не работает, и он выбирает предыдущий диапазон вместо "li".

Как это исправить?

благодаря

Теги:

2 ответа

3
Лучший ответ

Используйте .closest()

$("span.ui-icon-help").click(function () {
   alert($(this).closest("li").attr("id"));
   //alert($(this).parent().attr("id"));
});

Демо: скрипка

.prevAll() выбирает предыдущие элементы span.ui-icon-circle-close - в вашем случае span.ui-icon-circle-close и br являются предыдущим братом. Но вам нужны элементы предка. В вашем случае, поскольку span является прямым потомком целевого li вы можете использовать .parent(), или вы можете использовать .closest(), чтобы найти ближайшего предка, соответствующего селектору проходов

1

попробуйте использовать .parents(), например:

$("span.ui-icon-help").click(function () {
   alert($(this).parents("li").attr("id"));
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню