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か、DOM要素に直接アクセスしてプロパティにアクセスできます(@ sg3sがコメントで指摘しているように)。idattrpropid

$(".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

一番上をお願いしたのでclass="container"、先祖の階層に複数の物があるように傷があります。その場合は、次のようにします。

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

最も近い祖先class="container"(たとえば、最上位ではなく、クリックオンオブジェクトに最も近い祖先)が必要な場合、またはの祖先が1つしかないclass="container"場合は、これを行うと少し簡単になります。

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

ULに常にクラス'container'があり、PNGの間に同じクラスを持つ他の要素がなく、これを実行できる場合

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

これにより、セレクターに一致する最初の昇順の親が表示されます。

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

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

于 2012-04-22T15:19:38.697 に答える