这是我的代码片段:
<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"));
});
我需要的是获取第一个
此代码不起作用,它选择前面的跨度,而不是“li”。
如何解决这个问题?
由于
答案 0 :(得分:3)
$("span.ui-icon-help").click(function () {
alert($(this).closest("li").attr("id"));
//alert($(this).parent().attr("id"));
});
演示:Fiddle
.prevAll()选择以前的兄弟元素 - 在您的情况下,span.ui-icon-circle-close
和br
元素是之前的兄弟元素。但你需要的是祖先元素。在您的情况下,由于span
是目标li
的直接后代,您可以使用.parent(),或者您可以使用.closest()查找与传递选择器匹配的最近祖先
答案 1 :(得分:1)
尝试使用.parents(),例如:
$("span.ui-icon-help").click(function () {
alert($(this).parents("li").attr("id"));
});