0
<ul id="containerA" class="container">
        <li>
        <span class="sportsType" id="football">Football</span>
            <ul>
                <li class="sportsMatch">
                <img src="/static/img/arrow_left.png" class="subArrow"/>A vs B <img src="/static/img/arrow_left.png" class="star"/>
                </li>

当您单击带有类星的PNG时,我想返回最上面的ul(containerA)。我可以使用 .parent.parent.parent 等,但它还需要使用另一组不那么复杂的列表:

 <ul id="containerB" class="container">
 <li class="sportsMatch">
<img src="/static/img/arrow_left.png" class="subArrow"/>A vs B <img src="/static/img/arrow_left.png" class="star"/>
</li>

这是我的 jscript,我可以在其中放入什么来获取最近容器的 id?

$(".star").click(function() {}
4

5 回答 5

4

您将要使用.closest来查找被点击元素的最近祖先(this在事件处理程序内部)。如果你想要id容器的,你可以使用attror prop,或者直接访问 DOM 元素并访问id属性(正如@sg3s 在他的评论中指出的那样):

$(".star").click(function() {
    var $container = $(this).closest(".container"),
        containerId = $container.attr("id");
});

示例:http: //jsfiddle.net/L7JyY/

于 2012-04-22T15:16:10.213 回答
1

使用closest方法获取元素,然后使用attr方法获取id:

var ul = $(this).closest('.container');
var id = ul.attr('id');
于 2012-04-22T15:16:45.780 回答
0

这将为您带来与选择器匹配的第一个升序父级:

$(".star").click(function() {
    $(this).parentsUntil(".container").parent();
}

http://api.jquery.com/parentsUntil/

于 2012-04-22T15:19:38.697 回答
0

class="container"由于您要求最顶层,因此在祖先层次结构中可能存在多个对象。如果是这种情况,那么你会这样做:

$(".star").click(function() {
    var topContainer = $(this).parents(".container").last();
}

如果您想要最近的祖先class="container"(例如,不是最上面的,而是最接近点击对象的祖先)或者只有一个祖先带有class="container",那么您可以这样做稍微简单一些:

$(".star").click(function() {
    var container = $(this).closest(".container");
}
于 2012-04-22T15:16:42.287 回答
0

如果 UL 始终有一个“容器”类,并且 PNG 之间没有其他具有相同类的元素,那么您可以这样做

$(".star").click(function() {
  $(this).closest('.container')
})
于 2012-04-22T15:17:01.820 回答