У меня есть простая сетка элементов li, которую я сделал доступной. Затем я перебираю их после завершения выбора. Но набор элементов, по-видимому, представляет собой набор дубликатов, когда вы выбираете более 1 поля в сетке. Что здесь происходит?Почему выбран jQuery для сбора дублирующих элементов
ответ
Похоже, что выбранная функция вызывается несколько раз, по одному для каждого выбранного элемента.
Я изменил свой код, чтобы увидеть это:
elements = $('.ui-selected');
console.log(elements);
Из документации на http://jqueryui.com/demos/selectable/ это говорит о том, что «это событие происходит в конце операции выбора, на каждый элемент, добавленный к выбору. " так что вы видите, это ожидаемое поведение.
Я думаю, что вы хотите, это 'стоп' событие:
$("#selectableGrid").selectable({
stop: function() {
elements = $('.ui-selected');
elements.each(function(idx, item) {
alert($(item).position().top);
});
}
});
Вместо привязки к selected
события, попробуйте привязки к stop
события, как это:
stop: function() {
elements = null;
elements = $('.ui-selected');
elements.each(function(idx, item) {
alert($(item).position().top);
});
}
Выбранное событие будет срабатывать один раз для каждого элемента, который вы выбираете, а затем ваша функция будет также запускаются каждый раз, тем самым основываясь на списке выбранных элементов. Вместо этого вместо этого используется событие остановки, функция запускается только один раз для выбранного элемента.
Обратный вызов selected
вызывается один раз для каждого выбранного элемента. Внутри этого обратного вызова вы затем запрашиваете все выбранные элементы и предупреждаете о каждом из них.
Конечный результат заключается в том, что когда вы выбираете, например, 2 элемента, для первого элемента вызывается ваш обратный вызов selected
, и вы получаете одно предупреждение для этого элемента. Затем ваш обратный вызов вызывается для второго элемента, и в это время теперь выбрано два элемента, и теперь вы получаете еще 2 предупреждения (всего 3). Выбрав 3-й элемент, вы получите 6 предупреждений и т. Д.
Во всяком случае, это , почему его часть в отношении поведения, которое вы видите. Проверьте ответ @ j08691 на решение, которое показывает поведение, которое вы, вероятно, собираетесь делать.
- 1. Обнаружение дублирующих элементов jquery в массиве javascript
- 2. Объединение дублирующих элементов массива
- 3. Поиск дублирующих элементов массива
- 4. Добавление дублирующих элементов содержимого для Sharepoint 2013
- 5. Для XML Явных дублирующих элементов SQL
- 6. Clojure :: тестовый список для дублирующих элементов
- 7. Слияние дублирующих элементов внутри IEnumerable
- 8. JQuery каждый для сбора строк
- 9. Обработка дублирующих элементов AsyncTask при обновлении
- 10. Поиск дублирующих элементов в списке схем
- 11. Как удалить элемент массива без дублирующих элементов?
- 12. VBA макросов для копирования и вставки элементов из дублирующих клеток
- 13. Почему объект-обертка подходит для сбора мусора?
- 14. Почему у меня нет дублирующих рабочих функций?
- 15. Почему «выбран» не отображается?
- 16. jQuery выбран автозапуск отключен
- 17. набор выбран вариант JQuery
- 18. Сравнение дублирующих значений двух элементов в структуре materializecss
- 19. JQuery выбран на снятых
- 20. JQuery выбран/выделен номер
- 21. выбран jQuery не работает
- 22. JQuery выбран раскрывающийся VALUE
- 23. Лучший способ для сбора
- 24. Поиск дублирующих приложений для iPhone
- 25. JQuery: родительский div не выбран для fadein
- 26. Настольный дизайн о наборах элементов сбора данных
- 27. System.gc() для сбора мусора
- 28. JQuery - Почему мы пишем .attr («выбрана», «выбран») с выбором тегом
- 29. Данные для сбора данных
- 30. Запрос Hql для сбора данных сбора данных