Обновление до jQuery 1.7 и изменения в объекте event

#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.