Я наткнулся на функцию wrap() jQuery.jQuerys wrap функция wrap работает довольно нечетно
Как-то он ведет себя иначе, когда я пытаюсь обернуть два тега div, которые имеют некоторый текст между ними, чем без текста между двумя div.
JQuery:
var wrapper1 = '<div class="wrap1">something in between<div class="innerwrap1">';
$('.content1').wrap(wrapper1);
var wrapper2 = '<div class="wrap2"><div class="innerwrap2">';
$('.content2').wrap(wrapper2);
Результирующий HTML заключается в следующем:
<div class="wrap1">
something in between
<div class="innerwrap1"></div> <!-- wtf? -->
<div class="content1">Lorem</div>
</div>
<div class="wrap2">
<div class="innerwrap2">
<div class="content2">Ipsum</div>
</div>
</div>
Вот скрипку: http://jsfiddle.net/RfJN5/
Первый результат довольно удивительно, не так ли? Я думаю, что оба закрывающих divs должны быть размещены после .content1, независимо от того, существует ли любой текст между div.
Конечно, я знаю, что лучше добавить закрывающие divs для управления поведением, но это какая-то ошибка или просто непонимание того, как использовать обертку jQuery?
Заранее благодарен!
Вы используете неверную разметку в коде генерации HTML. Ожидайте неожиданные результаты. ** Различные браузеры будут интерпретировать недействительную разметку по-разному. ** –
Как и многие другие люди, вы совершенно не понимаете, как работают эти функции. Я подробно рассмотрел его для '.append()' [здесь] (http://stackoverflow.com/questions/15810067/sequence-of-running-code-in-jquery), многие из тех же идей для '.wrap()'. –
@ AnthonyGris вы поможете мне понять, что эти функции анализируют данную строку для создания элементов DOM. – voodoocode