JQuery UI; Остановите распространение выбираемых событий

RegExBuddy до сих пор я соглашаюсь с и подтверждаю.

9
задан Crescent Fresh 12 November 2009 в 22:57
поделиться

2 ответа

Событие start является хитрым фальшивым. Что вам нужно сделать, так это прикрепить свой код для отмены восходящей цепочки событий непосредственно к событию mousedown самого ul и убедиться, что ваш обработчик событий выполняется первым.

You ' в документации jQuery для event.stopPropagation эта маленькая строка:

Обратите внимание, что это не помешает другим обработчики на том же элементе из

Таким образом, хотя event.stopPropagation остановит всплытие события дальше по DOM, он не остановит другие обработчики событий, подключенные к ul . Для этого вам понадобится event.stopImmediatePropagation , чтобы остановить вызов выбираемого обработчика событий.

На основе выбираемой демонстрационной страницы этот фрагмент кода успешно отменяет вызов bubble:

$(function() {
    $("#selectable").mousedown(function (evt) {
        evt.stopImmediatePropagation();
        return false;
    });        
    $("#selectable").selectable();
});

Обратите внимание, что вы должны добавить обработчик событий к объекту ul до того, как вы выполните функцию настройки .selectable () , чтобы проникнуть внутрь и сначала откройте пузырек событий.

14
ответ дан 4 December 2019 в 12:19
поделиться

Ответ Сэма С не сработал для меня, вероятно, из-за того, как я расположил #selectable. Вот что я использовал:

$('#selectable')
  .mousedown(function (evt) {
    if (event.pageX > $(this).offset().left + $(this).width() - $.getScrollbarWidth())
    {
       evt.stopImmediatePropagation();
       return false;
    }
  })
  .selectable({filter: 'div'});

где $.getScrollbarWidth() находится из здесь

1
ответ дан 4 December 2019 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: