Это фрагмент моего кода:
<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".
Как это исправить?
благодаря
Используйте .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(), чтобы найти ближайшего предка, соответствующего селектору проходов
попробуйте использовать .parents(), например:
$("span.ui-icon-help").click(function () {
alert($(this).parents("li").attr("id"));
});