2010-10-06 107 views
3

我試圖用div標籤動態地包圍IMG和A標籤組,但無法使其工作。jQuery插入元素.before()和.after()不能按預期工作,我做錯了什麼?

我的html:

<img class="myClass-1" src="img5" /> 
<a class="myClass-2" href="url"></a> 

我的腳本:

$('img.myClass-1').each(function(){ 
    $(this).before('<div style="position: relative;">'); 
    $(this).next().after('</div>'); 
}); 

我螢火蟲結果:

<div style="position: relative;"/> 
<img class="myClass-1" src="img5" /> 
<a class="myClass-2" href="url"></a> 

我試圖做到:

<div style="position: relative;"> 
<img class="myClass-1" src="img5" /> 
<a class="myClass-2" href="url"></a> 
</div> 

我更換

$(this).next().after('</div>'); 

$(this).next().after('<p>test</p>'); 

只是爲了看看它無法執行的.next()()之後的代碼,但它工作正常。我是使用jQuery的新手,無法弄清楚我做錯了什麼。有人可以幫忙嗎?請。

回答

3

您可以使用.wrapAll(),像這樣:

$(this).next().andSelf().wrapAll('<div style="position: relative;" />'); 

You can test it out here,這需要<img><a>然後包裝他們<div>容器。

+0

jQuery是非常語義。我印象深刻的是,你可以用它編寫這樣的代碼。 (我試圖從原型走向jQuery。) – 2010-10-06 15:35:46

+0

WOW!這很好用!非常感謝。你怎麼知道存在(並且可以使用).andSelf()。wrapAll(...)? – Angie 2010-10-06 17:00:28

+0

@Angie - 該API網站有所有的方法和他們的目的:) http://api.jquery.com/你需要/找到他們,我認爲,這就是我怎麼去無論如何:) – 2010-10-06 17:01:41

1

你也可以擺脫每()(或只是與尼克的片段您選擇替換此):

$('img.myClass-1').next().andSelf().wrapAll('<div style="position: relative;" />'); 
+0

是的,謝謝。 – Angie 2010-10-06 17:02:39

相關問題