Я знаю, это кажется странным, потому что уже есть событие обновления. Но я использую библиотеку touch-punch
, чтобы использовать функции пользовательского интерфейса jQuery на сенсорных устройствах. Но, например, в браузере Chrome Nexus 7 обновление не срабатывает. Вот почему я пытаюсь исправить это с запуском события sortupdate
события sortover
.Как получить индекс элемента под перетаскиваемым на событие «sortover» с jQuery UI Sortable?
Проблема в том, что я не знаю, как получить индекс элемента под перетаскиваемым элементом. ui.item
возвращает индекс только перетаскиваемого элемента. Есть ли встроенная функция jQuery для этого? Получение индекса с помощью проверок с помощью мыши/наведения не будет работать, потому что перетаскиваемый элемент больше, чем mousecursor
. Получение индекса элементов по позиции курсора также кажется очень сложным ...
Вот скрипку: https://jsfiddle.net/8sjLw6kL/2/
Код: HTML:
<div id="sortable">
<div class="sortable"> bla </div>
<div class="sortable"> ble </div>
<div class="sortable"> blu </div>
</div>
JS:
var start_sort_index,
over_sort_index,
update_sort_index;
$('#sortable').sortable({
helper: 'clone',
containment: 'parent',
cursor: 'move'
});
$('#sortable').on('sortstart', function(event, ui){
start_sort_index = ui.item.index();
console.log('start: '+start_sort_index);
});
$('#sortable').on('sortover', function(event, ui){
over_sort_index = ui.item.index();
console.log('over: '+over_sort_index);
$('#sortable').trigger('sortupdate');
});
$('#sortable').on('sortover', function(event, ui){
update_sort_index = (typeof ui !== 'undefined')?ui.item.index():over_sort_index;
over_sort_index = undefined;
//my other code here
});
CSS:
#sortable{
width: 100%;
background-color: #ebebeb;
position: relative;
margin-top: 10px;
height: 60px;
}
.sortable{
padding: 5px 10px;
background-color: red;
margin: 5px;
float: left;
}
Классический способ для получения под любым перетаскиваемом элементом является '.hide' помощник, получить' .elementFromPoint' мыши, а затем '.show' помощник снова. В этом случае, однако, было бы лучше понять, почему обработчик post-update не запускается в первую очередь. – blgt
Спасибо за подсказку! Мне жаль, что я не знаю, почему событие sortupdate не срабатывает иногда, но я еще не мог понять. Функция «elementFromPoint» не может легко выполнять задание, потому что курсор не находится в позиции, где divs перекрываются, и поэтому он в основном выбирает родительский элемент даже при установке указателей-событий: none и ui-sortable to pointer- события: авто. Расчет для перехода в перекрывающееся положение немного сложнее. ... – user2718671
... События указателя также не работают IE, и при попытке получить позицию там также могут быть различия между касанием и мышью. Слишком сложно для небольшого сортируемого элемента. ;) Но спасибо за отзыв в любом случае! :) – user2718671