5

私はこの構造を持っています:

<div class="list">
    <ul>
        <li>
            <span class="number">1</span>
            <p class="list-title"><a href="#">Welcome</a></p>
            <img src="images/like.png" class="like" />

            <div class="subcomments">
                <div class="comments">
                <ul>
                    <li>
                        <span class="number">2</span>
                        <img src="images/like.png" class="like" />
                    </li>
                </ul>
            </div>
        </div>
    </li>
</ul>

そして、「いいね」というクラスをクリックすると、span.numberの内容が表示されます。つまり、父親に行き、クラス番号でスパンの内容を取得します。

私はこれを試しています:

$('.like').parent().children('span:first').text()

しかし、最初のいいねで 1 を与え、2 番目のいいねで 2 を与えるのではなく、常に 2 つの状況で 1 を与えます。

4

3 に答える 3

3

jquery siblings()が必要です、

ライブデモ

$('.like').siblings('span:first').text();
于 2012-11-12T11:42:01.920 に答える
0

あなたが使用する必要がありますthis

$(.link).click(function() {
   $(this).parent().find('.number').text();
   //  $(this).parent().find('span:first').text(); // same thing
   //  $(this).closest('.number').text();          // same thing
})

あなたがただ書くとき $('.link').parent().find('span:first').text(); それは常にファースト.linkクラスを取り、そのスパン値を取ります、あなたがそれを使うときそれはあなたがクリックしたものthisを正確に使用します.link

于 2012-11-12T11:40:44.390 に答える
0

使用.siblings()

$('.like').siblings('span:first').text();

これ自体は常に1を示します-セレクター.likeが2つの要素を返すため-次のコード(.siblings('span:first').text();)が最初の要素に対して両方の時間実行されます-それぞれを使用して各値をループする必要があります:

$('.like').each(function() {
    alert($(this).siblings('span:first').text());
})​

ここの例

于 2012-11-12T11:41:59.277 に答える