This is my code and i want to enclose each enclose each input and label with div
<div>
<input type="checkbox" name="checkbox1">
<label for="checkbox1">checkbox1</label>
<input type="checkbox" name="checkbox2">
<label for="checkbox2">checkbox2</label>
<input type="checkbox" name="checkbox3">
<label div="checkbox3">checkbox3</label>
<input type="checkbox" name="checkbox4">
<label for="checkbox4">checkbox4</label>
</div>
and, i want to enclose each input and label with div like
<div>
<div>
<input type="checkbox" name="checkbox1">
<label for="checkbox1">checkbox1</label>
</div>
<div>
<input type="checkbox" name="checkbox2">
<label for="checkbox2">checkbox2</label>
</div>
<div>
<input type="checkbox" name="checkbox3">
<label div="checkbox3">checkbox3</label>
</div>
<div>
<input type="checkbox" name="checkbox4">
<label for="checkbox4">checkbox4</label>
</div>
</div>
Try this
$('input').each(function() {
$(this).next('label').andSelf().wrapAll('<div class="testing"/>');
});
.testing {
background-color: blue;
}
.testing>label {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<input type="checkbox" name="checkbox1">
<label for="checkbox1">checkbox1</label>
<input type="checkbox" name="checkbox2">
<label for="checkbox2">checkbox2</label>
<input type="checkbox" name="checkbox3">
<label div="checkbox3">checkbox3</label>
<input type="checkbox" name="checkbox4">
<label for="checkbox4">checkbox4</label>
</div>
You can use .map()
$('input').map(function(index){
$(this).next().andSelf().wrapAll('<div>');
});
Demo
$('input').map(function(index){
$(this).next().andSelf().wrapAll('<div>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<input type="checkbox" name="checkbox1">
<label for="checkbox1">checkbox1</label>
<input type="checkbox" name="checkbox2">
<label for="checkbox2">checkbox2</label>
<input type="checkbox" name="checkbox3">
<label div="checkbox3">checkbox3</label>
<input type="checkbox" name="checkbox4">
<label for="checkbox4">checkbox4</label>
</div>
Associate both input
and label
with map and select both of the specific elements and wrap them up:
$('input').map(function() {
$(this).next().addBack().wrapAll('<div>');
});
JsFiddle
Updated with .addBack()
since .addSelf()
is deprecated
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With