У меня есть эта сортируемая функция, в которой я хочу иметь возможность добавлять пользователей в группу. Когда я перетаскиваю пользователя из таблицы пользователей в таблицу групп, я хочу иметь возможность проверить, существует ли этот идентификатор в таблице групп, и если это так, я хочу ответить сообщением об ошибке. Однако, когда я пытаюсь выполнить цикл Trou и получить идентификаторы из таблицы групп, я получаю неопределенное значение.
HTML-код:
<div class="userContainer">
<div id="userDiv">
<ul class="userList dragable" ></ul>
</div>
<div id="groupDiv">
<select id="DropDown"></select>
<input id="btnGetGroups" class="btn btn-success" type="button"
value="Hämta grupper" />
<select id="DropDownGroups"></select>
<input id="btnShowGroups" class="btn btn-success" type="button"
value="Visa grupp" />
<ul class="usersOfGroupList dragable"></ul>
</div>
</div>
Вот код для заполнения групповой таблицы текущими пользователями:
$('#btnShowGroups').click(function () {
var e = document.getElementById("DropDownGroups");
groupId = e.options[e.selectedIndex].value;
$('.usersOfGroupList').empty();
$.getJSON("mylinkgoeshere" + groupId + "", function (result) {
$.each(result, function (i, value) {
$('.usersOfGroupList').append($("<li id='userElement' data-userId='' ></li>").data('userId', value.Id).html(value.FirstName + " " + value.LastName));
$(".usersOfGroupList").addClass("addBorder");
});
});
});
Как вы видите, я использую 'userId' в качестве ключа в свойстве data-здесь.
Сортируемый код выглядит следующим образом:
$(".dragable").sortable({
connectWith: ".usersOfGroupList",
remove: function (e, ui) {
var $this = $(this);
var childs = $this.find('li');
if (childs.length === 0) {
$this.text("Nothing");
}
},
receive: function (e, ui) {
var array = [];
var $this = $(this);
var children = $this.find('li');
for (var i = 0; i < children.length; i++) {
var specificId = children[i].item.data('userId');
array.push(specificId);
console.log(array);
};
В свойстве receive я пытаюсь получить текущие идентификаторы пользователя, выполняя цикл по всем элементам li, а затем помещая идентификаторы в массив, но он возвращает только неопределенное значение. Я отладил, и li-элементы есть, но он выдает мне следующее сообщение об ошибке:
Uncaught TypeError: Невозможно прочитать свойство 'data' из неопределенного
на HTMLUListElement.receive