Динамическое изменение обработчика событий jqueryui accordion от «щелчка» до «наведения мыши» - PullRequest
0 голосов
/ 07 декабря 2010

У меня есть ситуация, когда я хотел бы иметь возможность перетаскивать предмет из списка в цель в аккордеоне.Однако элемент, который я перетаскиваю, может находиться на другой панели (которая не открыта).

Чтобы облегчить это, я хотел бы динамически изменить событие аккордеона от щелчка до наведения мыши после начала перетаскивания.После завершения перетаскивания я снова переключусь на щелчок.Это позволит пользователю парить над закрытой панелью, вызывая ее открытие, и в этот момент он может уронить предмет.Как только они закончат, я бы предпочел, чтобы они использовали щелчок, чтобы открыть панель.

Возможно ли это?Я пытался использовать сеттер:

$ (".selector") .accordion ("option", "event", 'mouseover');

, но, похоже, нена самом деле изменить событие на лету.Я нашел некоторые упоминания о том, что это может не поддерживаться.Если нет, кто-нибудь знает, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 04 мая 2011

ОК, похоже, это была ошибка.Должен быть решен в 1.9.

Ошибка JqueryUI 6740

0 голосов
/ 07 декабря 2010

Вам необходимо использовать установщик в обработчике событий drag-element. Должно работать что-то вроде следующего:

$('li.draggable').mousedown(function(){

    $( "div.accordion" ).accordion( "option", "event", 'mouseover' );

}).mouseup(function(){

    $( "div.accordion" ).accordion( "option", "event", 'click' );

});

Вам нужно будет адаптировать селекторы к вашему конкретному случаю. Обработчик событий mousedown сработает, когда пользователь нажмет на перетаскиваемый элемент, изменив настройку event аккордеона на 'mouseover'; когда щелчок отпущен, что приводит к прекращению перетаскивания, настройка event аккордеона изменяется на «щелчок».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...