создайте перетаскиваемое препятствие = все предметы, кроме себя - PullRequest
1 голос
/ 29 марта 2019

Я пытаюсь установить .obstacle перетаскиваемого элемента для всех других элементов, кроме самого.Текущий код работает, но мне нужно будет установить отдельное препятствие для каждого идентификатора.В этом примере я использую только 3 элемента, но рабочий код должен в конечном итоге содержать 100 элементов, поэтому я искал способ избежать необходимости вручную кодировать каждый из них.

$("#item1, #item2,#item3 ").draggable({
 preventCollision: true,
 containment: "#moveInHere"
});

$("#item1").draggable({
    obstacle: "#item2,#item3" ,
});
$("#item2").draggable({
    obstacle: "#item1,#item3" ,
});
$("#item3").draggable({
    obstacle: "#item1,#item2" ,
});

1 Ответ

0 голосов
/ 10 июня 2019

Вы должны присвоить всем перетаскиваемым элементам один и тот же класс, а затем инициализировать их таким образом.

Чтобы избежать ручного кодирования, вы можете попробовать это:

$('.widget').draggable({
  drag: function(event,ui) {
    $('.widget').not(ui.draggable).draggable('option', 'obstacle', '.widget');
  }
});

Это выберет каждый перетаскиваемый элемент, кроме текущего перетаскиваемого элемента.

PS: obstacle не является перетаскиваемой опцией jQuery UI, вы должны включить используемый вами плагин, если он вообще используется.

...