2012-06-08 68 views
6

我無法理解jqueries。每個。 我有以下代碼:jquery。每個工作只在第一個元素

$('#testDiv').each(function(index, domEle){  
    $(this).text(index); 
}); 

和下面的HTML

<div id="p18"> 
    <div class="inner"> 
     <span>...</span> 
     <p class="right">...</p> 
     <div id="testDiv"></div> 
    </div> 
</div> 
<div id="p19"> 
    <div class="inner"> 
     <span>...</span> 
     <p class="right">...</p> 
     <div id="testDiv"></div> 
    </div> 
</div> 
<div id="p20"> 
    <div class="inner"> 
     <span>...</span> 
     <p class="right">...</p> 
     <div id="testDiv"></div> 
    </div> 
</div> 

腳本運行時它僅適用於第一testDiv,因爲它正確地設置文本爲0,但是其他testDivs 。

我的總體目標是編寫一個腳本,它將根據另一個div的高度來設置div的高度。高度不同,所以我認爲一個循環結構是要走的路(除非我錯了?)

我在做什麼與jq代碼不正確?

+1

一個ID在整個頁面中應該是唯一的,你觀察到的行爲是完全正常的。 –

+1

您的HTML aint有效:)複製id

+0

解決具有相同ID的多個元素的問題,然後嘗試在類上使用'$ .each' '$('。inner')。each(function ...' – jimmym715

回答

16

您不能使用不同的元素相同#id。嘗試重命名休息,你會得到的結果你想

還是做到這一點(的作品,不添加任何類 - 更乾淨的代碼)

$('.inner div').each(function(index, domEle){  
    $(this).text(index); 
}); 
+0

我沒有id的設置用於我選擇的任何元素,在我的情況下,在我的函數中添加domEle完成了這個技巧。謝謝 – DerpyNerd

3

這不是each方法的問題。您已爲幾個不支持的元素指定了相同的id

改爲使用類,並且可以找到所有元素。

演示:http://jsfiddle.net/Guffa/xaL4n/

6

id選擇返回最大的一個元素。

你永遠不應該有多個具有相同ID的元素。這是一個無效的HTML

這是可行的,但你應該解決的HTML代替:

$('div[id="testDiv"]')... 

什麼你應該做的是:

<div id="p18"> 
    <div class="inner"> 
     <span>...</span> 
     <p class="right">...</p> 
     <div class="testDiv"></div> 
    </div> 
</div> 
<div id="p19"> 
    <div class="inner"> 
     <span>...</span> 
     <p class="right">...</p> 
     <div class="testDiv"></div> 
    </div> 
</div> 

然後由類選擇:

$('.testDiv')... 
+0

* facepalm * can not believe I忘了那個xD謝謝:) – Skye

+1

@Skye。請不要使用我的屬性選擇器解決方法。它仍然是一個無效的HTML。 – gdoron

+0

不用擔心。 testDivs正在添加jq,因此它是一個快速修復 – Skye

1

您的html無效。 Ids需要是獨一無二的。你應該改變id="testDiv"class="testDiv"

HTML

<div id="p20"> 
    <div class="inner"> 
     <span>...</span> 
     <p class="right">...</p> 
     <div class="testDiv"></div> 
    </div> 
</div> 

的Javascript

$('.testDiv').each(function(index, domEle){  
    $(this).text(index); 
}); 
1

你不能在一個HTML頁面中指定相同的div ID。

<div id="testDiv"></div> 

那insteed,嘗試

<div class="testDiv"></div> 

和你的函數應該像

$('.testDiv').each(function(index, domEle){  
$(this).text(index); 

});

相關問題