#javascript #jquery #jquery-ui
#javascript #jquery #jquery-пользовательский интерфейс
Вопрос:
Хорошо, это через меня для цикла, но я, наконец, проследил это до изменений в параметре объекта event при обратных вызовах. Позвольте мне изложить проблему:
Недавно я обновился до jquery 1.7 с версии 1.6.2 и заметил, что происходят некоторые странные вещи.
Наиболее заметно, что мои «сортируемые» jquery-ui (1.8.16) начали иметь некоторые нежелательные побочные эффекты:
СТРУКТУРА HTML
<ul id="ulFeatured">
<li><span class="Title">Item 1</span></li>
<li><span class="Title">Item 2</span></li>
<li><span class="Title">Item 3</span></li>
</ul>
<ul id="ulAvailable">
<li><span class="Title">Item 4</span></li>
<li><span class="Title">Item 5</span></li>
<li><span class="Title">Item 6</span></li>
</ul>
JQUERY
$("#ulFeatured, #ulAvailable").sortable
(
{
connectWith: ".connectedSortable",
receive: function (event, ui)
{
console.log(event.target);
}
}
).disableSelection();
Результаты
1.6.12
<ul id="ulFeatured" class="connectedSortable ui-sortable NoItems" style="">
1.7
<span class="Title">
У кого-нибудь есть какие-либо идеи по этому поводу? Я хотел бы использовать исходную функциональность event.target, являющуюся элементом, получающим элемент.
Спасибо! 🙂
Комментарии:
1. В браузерах, соответствующих W3C, event.target является элементом, который первоначально отправил событие. Насколько я могу судить, вы размещаете прослушиватель в ULS, но щелчок должен быть на промежутке. Итак, мне кажется, что event.target должен быть span (но я понятия не имею, что делает sortable , это может быть «исправление» объекта event и изменение значения целевого свойства).
2. «Сортируемый» — это функция в библиотеке пользовательского интерфейса jquery, которая позволяет перетаскивать элементы между UL. Я использую встроенный прослушиватель событий «receive» для обнаружения элементов, добавляемых в UL из другого.
Ответ №1:
Вы могли бы использовать метод jQuery .closest()
, чтобы найти список, к которому принадлежал элемент.
$("#ulFeatured, #ulAvailable").sortable
(
{
connectWith: ".connectedSortable",
receive: function (event, ui)
{
console.log($(event.target).closest('ul'));
}
}
).disableSelection();
Комментарии:
1. Это именно то решение, которое я придумал. Мне просто было интересно узнать об изменении в jquery или, как могло бы показаться, об исправлении ошибки, из-за которой на объект event была подана жалоба W3C.