2012-11-12 58 views
5

我有這樣的結構:獲取父和第一跨度孩子的jQuery

<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 1。

回答

3

你需要的jQuery siblings()

Live Demo

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

它的工作,謝謝! –

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你點擊了

0

使用.siblings()

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

這本身將始終顯示1 - 因爲選擇器.like正在返回2個元素 - 以下代碼(.siblings('span:first').text();)兩次都針對第一個元素運行 - 您需要使用每個元素循環每個值:

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

Example here

+0

告訴我1的兩種情形。 –

+0

@JamesCtreli它向你展示了一個,因爲你沒有使用每個循環遍歷''.like''選項。看到我的更新 – ManseUK