2014-06-19 58 views
-1

預期我有這樣的HTML不工作:jQuery的.find()在iPad上

<div id = "note"> 
    <div id = "selection"></div> 
    <div id = "element"></div> 
</div> 

<div id = "note"> 
    <div id = "selection"></div> 
    <div id = "element"></div> 
</div> 

<div id = "note"> 
    <div id = "selection"></div> 
    <div id = "element"></div> 
</div> 

和jQuery代碼:

$("[id=note]").each(function(){ 

    $(this).find("#selection").css("left", left).css("top", top); 

}); 
使用桌面的一切,當

按預期工作。 當使用ipad(safari或chrome)時 - 在.each函數的末尾,我得到了id =「#selection」的所有元素具有相同的左側和頂部。

我用文檢查調試代碼,並在控制檯當我運行$(本).find(「#選擇」)我得到有ID =「#selection」

我是否所有的三個要素想念什麼? 在ipad上使用「.find()」是否存在已知問題?

+2

ID應該是唯一的 –

+1

錯字'$( 「[ID =注意」)',而重複的ID –

+1

你錯過了']'的選擇。 – Barmar

回答

0

Id應該是唯一的。使用類來代替它,

<div class = "note"> 
    <div class = "selection"></div> 
    <div class = "element"></div> 
</div> 

<div class = "note"> 
    <div class = "selection"></div> 
    <div class = "element"></div> 
</div> 

<div class = "note"> 
    <div class = "selection"></div> 
    <div class = "element"></div> 
</div> 

jQuery的

$(".note").each(function(){ 

    $(this).find(".selection").css("left", left).css("top", top); 

}); 

編輯 像@Barmar建議,你不通過施加共同的風格每個元素都有循環,您可以直接使用這樣

$(".note .selection").css({left: left, top: top}) 
+0

不需要'.find'。只要'$(「。note .selection」).css({left:left,top:top})''。 – Barmar

+0

@Barmar你是對的。那麼也不需要循環。 –

0

該ID應該是唯一的。對於類似的ID,ID選擇器只能找到離子匹配DOM的第一個元素。使用類,而不是:

HTML:

<div class= "note"> 
    <div class= "selection"></div> 
    <div class= "element"></div> 
</div> 

JS:

$(".note .selection").css({"left":left,"top":top}); 
+0

如果你打算簡化它,可以使用'$(「。note .selection」).css(...)'。 – Barmar

+0

@Barmar:謝天謝地......沒有仔細看過每個部分,也沒有將它與事件混淆起來。 –

0

使用類,而不是編號。怎麼一回事,因爲ID是HTML獨特

$("[class=note]").each(function(){ 

    $(this).find(".selection").css({"left":left , top : top}); 

}); 
+0

你也錯過了']'。 – Barmar

+0

感謝Man @ barmar –