Jquery更改元素顺序

vnp*_*nlz 9 html jquery

如何使用jQuery将每个标签移动到它们旁边的输入元素前面?

<div class="input select classCheckBox">
    <label for="checkboxId">classCheckBoxs</label>
    <input type="hidden" id="checkboxId" value="" name="checkboxName" />
    <br /> 
    <div class="classCheckBox"> 
        <input type="checkbox" id="checkboxId24" value="1" name="checkboxName[]" />
        <label for="checkboxId24">1 </label>
    </div>
    <div class="classCheckBox">
        <input type="checkbox" id="checkboxId25" value="2" name="checkboxName[]" />
        <label for="checkboxId25">2</label>
    </div>
    <div class="classCheckBox"> 
        <input type="checkbox" id="checkboxId26" value="3" name="checkboxName[]" />
        <label for="checkboxId26">3</label>
    </div>
    <div class="classCheckBox">
        <input type="checkbox" id="checkboxId27" value="4" name="checkboxName[]" />
        <label for="checkboxId27">4</label>
    </div>
    <div class="classCheckBox"> 
        <input type="checkbox" id="checkboxId28" value="5" name="checkboxName[]" />
        <label for="checkboxId28">5</label>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

the*_*dox 17

$('.select .classCheckBox label').each(function() {
  $(this).insertBefore( $(this).prev('input') );
});
Run Code Online (Sandbox Code Playgroud)

DEMO


一点解释

  • $('.select .classCheckBox label')label在每个中选择每个.classCheckBox

  • $(this) 在循环点内 label

  • .insertBefore() 在作为参数传递的匹配元素之前插入任何元素

  • $(this).prev('input')指出input之前label

  • 所以,$(this).insertBefore( $(this).prev('input') )label在之前插入每个input


相关参考:


替代方式:

$('.select .classCheckBox input').each(function() {
  $(this).insertAfter( $(this).next('label') );
});
Run Code Online (Sandbox Code Playgroud)

DEMO

要么

$('.select .classCheckBox input').each(function() {
  $(this).before( $(this).next('label') );
});
Run Code Online (Sandbox Code Playgroud)

DEMO