Pepe :
My html:
<div class="wrapper">
<div class="objects">House, Cat, Dog, Car</div>
</div>
<div class="wrapper">
<div class="objects">House, Cat, Car</div>
</div>
<div class="wrapper">
<div class="objects">Cat, Dog</div>
</div>
My script:
$('.wrapper > .objects').each(function() {
var objects = $(this).text();
var objectsSplit = objects.split(',');
// console.log(objectsSplit);
$(this).empty(); // remove old content
$.each(objectsSplit, function(index, value) {
$('.wrapper > .objects').append("<div>" + value + "</div>");
});
});
I want to wrap every "object" into a div and remove the ",".
What I want:
<div class="wrapper">
<div class="objects">
<div>House</div>
<div>Cat</div>
<div>Dog<div>
<div>Car</div>
</div>
</div>
<div class="wrapper">
<div class="objects">
<div>House</div>
<div>Cat</div>
<div>Car</div>
</div>
</div>
// and so on ...
With my script I can store them all in an array, but the "$.each(objectsSplit, function(index, value) ...
" part doesn`t work - the script crashes. Whats my fail?
palaѕн :
This issue is happening because you are trying to append the new divs to each $('.wrapper > .objects')
, inside of the current objects
you are looping over. You can fix it by caching the current $(this)
like:
var $this = $(this);
and then using this jquery object for append like:
$this.append("<div>" + value + "</div>");
Instead of doing:
$('.wrapper > .objects').append("<div>" + value + "</div>");
DEMO:
$('.wrapper > .objects').each(function() {
var $this = $(this);
var objects = $this.text();
var objectsSplit = objects.split(',').map(s => s.trim());
$this.empty(); // remove old content
$.each(objectsSplit, function(index, value) {
$this.append("<div>" + value + "</div>");
});
});
.wrapper > .objects { border:2px solid green; margin: 5px; padding:5px 10px;}
.wrapper > .objects > div { background-color:#EEE;margin-bottom: 5px; padding:4px 10px;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper">
<div class="objects">House, Cat, Dog, Car</div>
</div>
<div class="wrapper">
<div class="objects">House, Cat, Car</div>
</div>
<div class="wrapper">
<div class="objects">Cat, Dog</div>
</div>
Guess you like
Origin http://10.200.1.11:23101/article/api/json?id=405188&siteId=1