jQuery将每个标签包装在一个div中

时间:2014-09-06 16:15:21

标签: jquery html

我想在div中包装每两个标签。这些标签是输入无线电类型按钮的父母,我想像输入无线电类型的父母那样定位它们,以避免在我的网站上包装任何其他现有标签(可能有更好的方法来定位这些标签)。这是JSFiddle http://jsfiddle.net/Lqu8rcLb/2/

<form id="myform" method="post" action="">
<fieldset>
<dl>
<dd>
  <label>
    <input type="radio" name="radio1" value="radio1">
  </label>
   <label>
     <input type="radio" name="radio1" value="radio2">
   </label>
</dd>
</dl>      
      <br></br>
<dd>
  <label>
    <input type="radio" name="radio2" value="radio3">
  </label>
   <label>
     <input type="radio" name="radio2" value="radio4">
   </label>
</dd>
</dl>       
</fieldset>
</form>

jQuery的:

$('input:radio').parent().each(function () {
  $(this).wrapAll("<div class="wrapped-labels"></div>");
});

但jQuery代码不起作用,我尝试了很多其他的可能性,最接近的是将每个标签包装在div中,但这不是我想要的,因为我想在一个div中使用两个标签。

1 个答案:

答案 0 :(得分:0)

您可能只希望获得其中一个标签,然后将兄弟标签添加到集合中,然后包装在div中

$('#myform label:has(input[type="radio"]) + label:has(input[type="radio"])').each(function() {
    $(this).add($(this).siblings('label')).wrapAll('<div class="wrapped-labels"></div>')
});

FIDDLE

另一种方法是

$('input[type="radio"]').parent().each(function() {
    if ( ! $(this).closest('.wrapped-labels').length )
        $(this).add($(this).siblings('label')).wrapAll('<div class="wrapped-labels"></div>');
});