У меня есть код ASP.Net, подобный следующему (это внутри ПОЛЕВОЙ СЕТИ):
<ol>
<li>
<label>Some label</label>
<one or more form controls, ASP.Net controls, labels, etc.>
</li>
<li>
<label>Another label</label>
<... more of the same...>
</li>
...
</ol>
Я пытаюсь сохранить свою разметку настолько чистой, насколько это возможно, но я решил, что по разным причинам мне нужно обернуть DIV вокруг всего в элементе списка после первой метки, например:
<ol>
<li>
<label>Some label</label>
<div class="GroupThese">
<one or more form controls, ASP.Net controls, labels, etc.>
</div>
</li>
<li>
<label>Another label</label>
<div class="GroupThese">
<... more of the same...>
</div>
</li>
...
</ol>
Я бы предпочел сделать это с помощью "ненавязчивого Javascript" через jQuery вместо того, чтобы засорять мою страницу дополнительной разметкой, чтобы я мог сохранять семантически "чистую" форму.
Я знаю, как написать селектор jQuery, чтобы добраться до первой метки в каждом элементе списка $ ("li + label") или использовать: first-child. Я также знаю, как вставить вещи после выбора.
Что я не могу понять (по крайней мере, так поздно ночью), так это как найти все, что находится после первой метки в элементе списка (или, по сути, все, что есть в элементе списка, за исключением первой, было бы другим способом это) и оберните DIV вокруг этого в функции готовности документа.
UPDATE:
Код Оуэна сработал, как только я удалил одинарные кавычки из:
$('this')
и установил правильный селектор потомков:
$("li label:first-child")
, чтобы выбрать только первую метку, которая появляется после элемента списка.
Вот что я сделал:
$(document).ready(function() {
$('li label:first-child').each(function() {
$(this).siblings().wrapAll('<div class="GroupThese"></div>');
});
});