RegExBuddy до сих пор я соглашаюсь с и подтверждаю.
Событие 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 ()
, чтобы проникнуть внутрь и сначала откройте пузырек событий.
Ответ Сэма С не сработал для меня, вероятно, из-за того, как я расположил #selectable. Вот что я использовал:
$('#selectable')
.mousedown(function (evt) {
if (event.pageX > $(this).offset().left + $(this).width() - $.getScrollbarWidth())
{
evt.stopImmediatePropagation();
return false;
}
})
.selectable({filter: 'div'});
где $.getScrollbarWidth() находится из здесь