Другой день, другая проблема. У меня что-то вроде этого:
<p class = "checkbox">
<input name = "cgv" id = "cgv" value = "1" type = "checkbox">
<label for = "cgv">Some text.</label>
</p>
Используя jquery, я хочу изменить этот код на:
<p class = "checkbox">
<div class = "checker" id = "uniform-cgv">
<span>
<input name = "cgv" id = "cgv" value = "1" type = "checkbox">
</span>
</div>
<label for = "cgv">Some text.</label>
</p>
Итак, элемент input #cgv находится внутри элементов span и div. Я хочу сделать это с помощью этого кода, но безрезультатно.
$('#submitGuestAccount').click(function () {
//True if parent is <p> element
if ($('#cgv').parent().hasClass('checkbox')) {
$('<span>').insertBefor('#cgv');
$('</span>').insertAfter('#cgv');
}
});
Кто-нибудь может помочь мне с моей проблемой?
С уважением
Это оно. Спасибо
Это действительно плохая структура - семантически элемент «<p>» следует использовать для текста, то есть для абзацев, а не в качестве оболочки для нетекстовых элементов, особенно для входных данных. Что вам нужно сделать, так это изменить структуру html на div, который обтекает ввод. Да - это можно сделать (согласно ответу листа), но вы должны спросить себя - какова основная цель этой структуры html, и это НЕ общий элемент без семантической цели (этот элемент - "<div>" которые можно использовать для размещения других элементов.
Это нативный функционально в Prestashop 1.6.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


API jQuery хорошо документирован: : http://api.jquery.com/wrap/.
$("#cgv").wrap(
"<div class=\"checker\" id=\"uniform-cgv\"><span></span></div>"
);div{border:10px solid red}
span{border:10px solid blue}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class = "checkbox">
<input name = "cgv" id = "cgv" value = "1" type = "checkbox">
<label for = "cgv">Some text.</label>
</p>Я искал в документации, но не знаю, как найти эту функцию. Спасибо за помощь.