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>

我想当点击类“like”时出现span.number的内容,即去父亲那里获取带有类号的span的内容。

我正在尝试这个:

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

但是在这两种情况下总是给我 1,而不是在第一次喜欢时给 1,在第二次喜欢时给 2。

4

3 回答 3

3

你需要 jquery兄弟姐妹()

现场演示

$('.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();) 两次都针对第一个元素运行 - 您需要使用 each 来循环每个值:

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

这里的例子

于 2012-11-12T11:41:59.277 回答