Reputation:
I have this html structure. I want the other field items to be together with the others.
<div class="secondary-images">
<div data-quickedit-field-id="node/29/rd_page_secondary_image/da/full" class="group1">
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
</div>
<div data-quickedit-field-id="node/29/rd_page_secondary_image/da/full" class="group2">
<div class="field__item"></div>
<div class="field__item"></div>
</div>
</div>
And I want this.
<div class="secondary-images">
<div data-quickedit-field-id="node/29/rd_page_secondary_image/da/full" class="group1">
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
</div>
<div data-quickedit-field-id="node/29/rd_page_secondary_image/da/full" class="group2">
</div>
</div>
How do i move the elements. I tried this but with no luck.
var $element = $('.secondary-images > .group2').detach();
$('.secondary-images > .group1').append($element);
Upvotes: 1
Views: 108
Reputation:
This worked for me.
$('.secondary-images .group2 .field__item').detach().appendTo($('.secondary-images .group1'));
$('.secondary-images .field__item').each(function() {
if ($(this).find('picture').length) {} else {
$(this).remove();
}
});
Upvotes: 1
Reputation: 4523
The following code should work perfectly :
$('.secondary-images .group2').detach().appendTo($('.secondary-images .group1'));
short and simple.
Upvotes: 0
Reputation: 361
<script>
$(document).ready(function() {
$(".group1").append($(".group2").detach());
});
</script>
Just before </body>
Here is an example: http://plnkr.co/edit/U6NwzpcYFojCrDkXWMRt?p=preview
Upvotes: 1
Reputation: 1182
1.- The mistake: Make sure the dom is available for manipulation. So this should work correctly:
$(document).ready( function () {
var $element = $('.secondary-images > .group2').detach();
$('.secondary-images > .group1').append($element);
});
2.- The way you want it to work: Due to the layout, the above code will make the whole group2
div to appear inside the group1
div, nesting it. I think you want to only put the content of it so here is the snippet:
$(document).ready( function () {
$('.secondary-images > .group2 > .field__item').each(function() {
$( this ).detach();
$('.secondary-images > .group1').append( this );
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="secondary-images">
<div data-quickedit-field-id="node/29/rd_page_secondary_image/da/full" class="group1">
<div class="field__item">a</div>
<div class="field__item">b</div>
<div class="field__item">c</div>
<div class="field__item">d</div>
<div class="field__item">e</div>
<div class="field__item">f</div>
</div>
<div data-quickedit-field-id="node/29/rd_page_secondary_image/da/full" class="group2">
<div class="field__item">g</div>
<div class="field__item">h</div>
</div>
</div>
<!-- REFERENCE
<div class="secondary-images">
<div data-quickedit-field-id="node/29/rd_page_secondary_image/da/full" class="group1">
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
<div class="field__item"></div>
</div>
<div data-quickedit-field-id="node/29/rd_page_secondary_image/da/full" class="group2">
</div>
</div>
-->
This will detach and append every field__item
from group2 and put it on group1, after that you can do whatever you like with group2, either remove it or leave it to fill with content later.
Upvotes: 0
Reputation: 8396
Try with this:
$('.secondary-images .group2 .field__item').appendTo($('.secondary-images .group1'));
Upvotes: 0
Reputation: 355
This will do it:
var $element = $('.secondary-images > .group2 .field__item').detach();
$('.secondary-images > .group1').append($element);
Upvotes: 0
Reputation: 3940
You should be able to do this in one line. You can put in a function or event.
$('.secondary-images > .group2 > div').appendTo('.secondary-images > .group2');
Upvotes: 0