#jquery #jquery-ui
#jquery #jquery-пользовательский интерфейс
Вопрос:
У меня есть предварительно написанный код, который я хочу изменить. Я не понимаю, в чем проблема. Я хочу вызывать API при изменении порядка сортировки li. Вот код:
$(function() {
$("#sortable").sortable({
revert:true
});
$( "#dragable" ). draggable({
connectToSortable: "#sortable",
helper: "clone",
revert:"invalid"
});
$("#sortable").bind( "sortstop", function (event, ui){
var currentItem = ui.item;
var currentPosition = $('#sortable li').index(currentItem) ;
var callApi = true;
var Id = currentItem[0].id;
var html = Id.split('_')[1];
if( currentPosition == sortOrder[html])
{
callApi=false;
}
sortOrder[html] = currentPosition;
if(callApi)
{
buyer=new BHBuyer();
buyer.updateSortOrder(html,currentPosition);
}
});
$("ul, li").disableSelection();
});
Когда я запускаю это, это выдает мне такую ошибку «Неперехваченная ошибка ссылки: сортировщик не определен»
Кто-нибудь может помочь?
Или есть какой-либо альтернативный способ исправить это: S?
Комментарии:
1. Что ж, переменная «SortOrder», похоже, не определена, поэтому ошибка неудивительна. Каким, по-вашему, должен быть «SortOrder»?
2. ну, моя цель — вызвать функцию / API при изменении порядка сортировки в Li. если я перетащу li и не изменю порядок сортировки, это не должно вызывать API / функцию. где я должен установить sortOder в коде? я сделал var SortOrder = ‘0’; это останавливает ошибку, но не вызывает API. где я должен это вызвать тогда?
Ответ №1:
Инициализируйте SortOrder с помощью var sortOrder = new Object();
. Это должно быть сделано в глобальном коде, а не внутри функции.
Также измените
if( currentPosition == sortOrder[html])
Для
if (sortOrder[html] amp;amp; currentPosition == sortOrder[html])
который проверит, определено ли sortOrder[html]
перед сравнением