Переместить или скопировать элемент jquery

92
15 февраля 2022, 08:50

UPD: Вот такая конструкция работает, но получается выбрать не конкретный элемент, после которого нужно поставить блок, а все элементы класса item.

$('.item').eq(14).insertBefore($('.item'))

А в данном примере мне нужно вставить только 14 элемент после другого элемента (в примере он тоже 14), но так ничего не происходит: $('.item').eq(14).insertBefore($('.item').eq(14))

Привет! Не понимаю почему не работает функция .append() в jquery. Если я выбираю элемент и внутри append прописываю текст (string), то он работает как и должен. Код для примера:

$('.myclass').append("<div class='otherDIV'>something</div>");

А если я выбираю элемент, который я хочу вставить с помощью jquery, вставка не происходит:

$('.myclass').append($('.otherDIV'));

Пробовал использовать appendTo, insertAfter - тоже не срабатывают. Подскажите, в чем я не прав и как все-таки можно выбрать элемент и вставить его в нужное место с помощью jquery.

Возможно нужно обрисовать общую картину: я пытаюсь перемещать объекты в сетке. Перемещать не в пространстве страницы, а в разметке, т.е. поставить после нужного мне . Посмотреть сетку можно на этом .

Код перемещения объектов:

// Проверяю, есть ли до (сзади) текущего широкого поста
//  высокий пост. Если есть, и если после него есть пустой блок,
//  я ставлю широкий пост после пустого блока, а до него (пустого
//  ставлю первый попавшийся квадратный пост из последующих
if($('.item').eq(i-1).attr('sise') == 'vertical') {
  if ($('.item').eq(i+1).hasClass('ADDED')) {
    console.log('широкий стоит после высокого');
    // начинаю перебор всех блоков после текущего
    for (let a=(i); a < $('.item').length; a++) {
      console.log('перебор начался');
      if (($('.item').eq(a).hasClass('ADDED')==false) && ($('.item').eq(a).attr('sise') == '')) {
        //ставлю перед (до) этим (широким) блоком обычный квадратный
        $('.item').eq(i).before($('.item').eq(a)); a++; i++;
        //удаляю квадратный
        $('.item').eq(a).remove();
        //ставлю текущий блок после пустого
        $('.item').eq(i).after($('.item').eq(i+1))
        //удаляю текущий блок
        $('.item').eq(i).remove();
        break;
      }
    }
  }
}

Код сетки:

<div class="gallery">
  <div sise="wide" class="item">{{> post/post}}</div>
  <div sise="" class="item">{{> post/post}}</div>
  <div sise="vertical" class="item">{{> post/post-tall}}</div>
  <!-- square -->
  <div sise="wide" class="item">{{> post/post}}</div>
  <div sise="vertical" class="item">{{> post/post-tall}}</div>
  <div sise="wide" class="item">{{> post/post-double}}</div>
  <div sise="" class="item">{{> post/post}}</div>
  <div sise="" class="item">{{> post/post}}</div>
  <div sise="" class="item">{{> post/post}}</div>
  <div sise="wide" class="item">{{> post/post}}</div>
  <div sise="vertical" class="item">{{> post/post}}</div>
  <div sise="wide" class="item">{{> post/post}}</div>
  <div sise="" class="item">{{> post/post}}</div>
  <div sise="" class="item">{{> post/post}}</div>
  <div sise="" class="item">{{> post/post}}</div>
  <div sise="wide" class="item">{{> post/post}}</div>
</div>

Надеюсь, понятно изложил

Answer 1

Где в Вашем коде неработающий append?

function move() { 
  if ($(".one .child").length == 2) 
    $(".parent").eq(1).append($(".child").eq(1)); 
  else 
    $(".parent").eq(0).append($(".child").eq(1)); 
}
.parent { 
  border: 1px solid black; 
  width: 150px; 
  height: 65px; 
  display: block; 
  background: lightgreen; 
} 
 
.child { 
  border: 1px solid black; 
  width: 30px; 
  height: 30px; 
  background: pink; 
  margin: 10px; 
  padding: 5px; 
  display: inline-block; 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<div class="parent one"> 
  <span class="child">1</span> 
  <span class="child">2</span> 
</div> 
<div class="parent two"></div> 
<br/> 
<button onclick="move()">Move</button>

READ ALSO
Метод Random.setSeed()

Метод Random.setSeed()

Здраствуйте скажите прошу детально что делает метод setSeed() с класса Random в java, какое отношение он имеет к атомарности и почему он synchronizedЗаранее...

119
что такое представления в java android?

что такое представления в java android?

Смотрел видео о разработке под Android и услышал такую фразу "LayoutInflater - класс, который позволяет из xml файлов создавать новые представления",...

65
Исчезают переносы строк при переходе в Gmail через Intent на Samsung

Исчезают переносы строк при переходе в Gmail через Intent на Samsung

Использую intent для перехода из приложения на почту и заполнение письма шаблоном

104