2012-01-12 28 views
2

我動態使用javascipt的添加元素:如何檢索動態創建元素的偏移量?

$('.marker').append('<div class="container" id="id' + counter + '" ><input type="text" name="textbox" id="textbox' + counter + '" value="" ></div>'); 
counter++; 

我需要有位置(偏移x和y)的那些添加元素的。用戶可以添加和刪除這些元素。然後它應該被保存,我需要有最終的元素位置列表。

我試過使用jquery offset()函數,但它只適用於沒有動態添加的元素。

是否可以檢測這些動態添加元素的偏移量?如果是,那麼如何?

+2

使用'offset'應該正常工作。看到這個例子fiddle:http://jsfiddle.net/XGPt9/3/ – 2012-01-12 15:38:33

+0

也許你應該顯示用於發現動態創建元素的偏移量的代碼。只要這些元素在文檔中,這絕對是可能的。 – marchaos 2012-01-12 15:39:05

回答

3

不知道,如果你」再沒有解釋得非常好,如以下示例做什麼你問...

http://jsfiddle.net/johncmolyneux/zXSuh/

只需打開控制檯並運行它。

下面是顯示在控制檯中的偏移值的代碼...

$(".container").each(function() { 
    console.log($(this).offset().top); 
}); 
+0

請在您的回答中包含代碼,jsfiddle可能並不總是在附近,甚至現在加載甚至花費太長時間來查看代碼。 – Esailija 2012-01-12 15:52:54

+0

它使我的.offset在代碼中出現錯誤的地方。感謝你的小提琴,我能夠使它工作。 – Marta 2012-01-12 15:54:45

+0

@Esailija好點 - 我現在就去做。 – Archer 2012-01-12 15:55:29

0

你試過分配一個變量來動態創建的元素,像這樣:

var el = $('<div class="container" id="id' + counter + '" ><input type="text" name="textbox" id="textbox' + counter + '" value="" /></div>'); 

$('.marker').append(el); 
counter++; 

那麼你應該能夠使用el.offset():

el.offset(); 
2
var div = $("<div>", { 
    "class": "container", 
    id: "id" + counter 
}).append($("<input>", { 
    type: "text", 
    name: "textbox", 
    id: "textbox" + counter 
})); 

$(".marker").append(div); 

var offset = div.offset(); 
console.log(offset.left, offset.top); 

counter++;