2011-02-11 92 views
1

我試圖用三個其他元素替換一個元素,使用jQuery的replaceWith,但它似乎並沒有工作。jQuery replaceWith不工作,而用三個元素替換

HTML:

<span>first</span> 
<span>second</span> 
<span>third</span> 

JS:

var spans = $("span"); 
spans.eq(1).replaceWith("<span></span><span></span><span></span>"); 

這應該,如果我寫,導致:

<span>first</span> 
<span></span><span></span><span></span> 
<span>third</span> 

但是沒有什麼變化......有什麼想法?

編輯:這意味作爲一個例子,我並沒有考慮到實際的DOM和DOM產生的差(?是有區別看起來是這樣......)

var spans = $("<span>first</span><span>second</span><span>third</span>"); 
spans.eq(1).replaceWith($("<span></span><span></span><span></span>")); 

所以我的代碼更加準確。

+0

作品對我來說http://jsfiddle.net/yads/z9VDw/ – Vadim 2011-02-11 17:53:25

+0

呀,看來我的代碼示例是有缺陷的...... – skeggse 2011-02-11 19:00:13

回答

1

編輯。檢查http://jsfiddle.net/z9VDw/3/。似乎你必須在做這種操作之前追加斷開的DOM節點。

+0

現在它無法正確地(見編輯) – skeggse 2011-02-11 19:45:13

0

現在,我看到你想要做什麼,它不會工作。使用片段進行Dom操作在jQuery中不起作用。 (除了設置屬性/ css。)replaceWith在下一個元素之前插入值。在這種情況下,<span>third</span>,然後再次返回this,這是什麼this之前,你叫replaceWith。這是<span>second</span>