2010-10-06 26 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

相关问题