2013-06-29 31 views
-1

想不通:jQuery的鄰桌,爲什麼不選擇與AAA「表」

<b>CLICK ME!</b> 
<br/> 
<table> 
    <tr> 
     <td>AAA</td> 
    </tr> 
</table> 

<b>CLICK ME!</b> 
<table> 
    <tr> 
     <td>BBB</td> 
    </tr> 
</table> 

<script> 
    $(document).ready(function() { 
    $(document).on('click', "b", function(){ 
     $(this).next("table").css('background-color', 'red'); 
    }); 
    }); 
</script> 

當使用$(this).next().next().css('background-color', 'red');表中找到。

不尋找nextAll,我只需要單擊元素後的第一個表。

+0

「不工作」永遠不是一個有效的問題 – PeeHaa

回答

1

排序有:

$(this).nextAll("table:first") 
+0

當Musa已經擁有時,你不需要發佈一個答案與實際使用的內容。如果您使用了他們的建議,請接受答案。如果你調整了代碼,評論他們的答案解釋。如果您需要更多幫助,請評論他們的答案。 – Ian

+0

@ Ian這與Musa的回答並不相同。穆薩的解決方案沒有「:第一」,並且會錯誤地包含額外的表格。如果目的是要長期提及有用的問題,那麼將其作爲實際答案而不是評論意義重大。 – jcsanyi

+0

@jcsanyi不管它是否完全相同,都沒關係。 Musa提供瞭解決原始問題的方案 - 「next」不正確,需要「nextAll」。 OP然後繼續編輯他們的問題並更改要求。而不是這樣做,他們應該首先解釋得更好,或者在穆薩的回答中提出更多的幫助。穆薩可以很容易地提供修復。 OP很少有理由添加答案。而你的答案只是複製了穆薩的答案和這個答案,所以它真的不需要 – Ian

1

的問題是,.next()只會看緊隨其後的元素。如果包含一個選擇器,它將檢查該元素是否匹配,如果不匹配,則只返回一個空集。您需要使用.nextAll()來代替。

我知道你只想要第一張表,而.nextAll()會返回所有後續表。爲了解決這個問題,你可以明確地包括在你的選擇:first,像這樣:

$(this).nextAll('table:first') 

...或者你可以向下修剪列表,一旦你得到所有的人:

$(this).nextAll('table').eq(0) 

你可以在這裏看到一個這樣的例子:http://jsfiddle.net/6x3EY/

+0

爲了使它更加美好/完成後,您可以添加一個或的jsfiddle東西一個:) – Ian

相關問題