2010-10-06 2 views
3

Я пытаюсь динамически окружать множества IMG и тегов тегом div, но я не могу заставить его работать.Элемент ввода 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>'); 
}); 

мой результат Firebug:

<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.) –

+0

WOW! Это отлично работает! Огромное спасибо. Как вы узнаете, что есть (и можете использовать такие вещи) .andSelf(). WrapAll (...)? – Angie

+0

@Angie - У сайта API есть все методы и для чего они нужны :) http://api.jquery.com/ Вы узнаете, нуждаясь/находите их, я полагаю, вот как я иду :) :) –

1

Вы также могли бы избавиться от каждого() (или просто заменить это с селектором в сниппет Ника):

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

Да, спасибо. – Angie