开发者

jQuery inserting element .before() and .after() does not work as expected, what am I doing wrong?

开发者 https://www.devze.com 2023-01-19 11:20 出处:网络
I am trying to dynamically surround sets of IMG and A tags with a div tag but am unable to make it work.

I am trying to dynamically surround sets of IMG and A tags with a div tag but am unable to make it work.

my html:

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

my script:

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

my Firebug outcome:

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

What I am trying to accomplish:

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

I replaced

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

with

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

just to see if it was unable to execute the .next().after() code but it works fine. I am new to using jQuery and can't f开发者_StackOverflowigure out what I'm doing wrong. Can somebody help? Please.


You can use .wrapAll(), like this:

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

You can test it out here, this takes <img> and <a> then wraps them both in that <div> container.


You could also get rid of the each() (or just replace this with your selector in Nick's snippet):

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

精彩评论

暂无评论...
验证码 换一张
取 消