选择前面的第一个LI元素



这是我的代码片段:

<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"));
});

我需要的是获得我们点击的元素之前的第一个

  • 元素的id,即第二个span,带有classui图标帮助-它应该会触发警报"eur"。

    这段代码不起作用,它选择了前面的跨度,而不是"li"。

    如何解决此问题?

    感谢

  • 使用.closest()

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

    演示:Fiddle

    .prevAll()选择前面的同级元素-在您的情况下,span.ui-icon-circle-closebr元素是前面的同级。但你需要的是祖先元素。在您的情况下,由于span是目标li的直接后代,您可以使用parent()或使用.closest()来查找与通行证选择器匹配的最近祖先

    尝试使用parents(),如:

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

    最新更新