Одна из интересных особенностей jQuery (обычно я не использую jQuery 'и' cool 'в одном предложении) заключается в том, что он позволяет вам указать настраиваемое поведение для событий, используя объект $.event.special
.
На эту тему есть very little documentation, поэтому может быть приведен пример. рабочая скрипку, используя click
событие (, как это было более удобно для меня, чтобы написать на моем ноутбуке) can be found here
Переведенный на запрос, чтобы всеtap
события e.preventDefault()
вызывается до фактического обработчика, будет выглядеть как:
$.event.special.tap.add = function(options) {
var handler = options.handler;
options.handler = function(e) {
e.preventDefault();
return handler.apply(this, arguments);
}
}
что делает этот код (должно делать, так как я на самом деле не протестировал tap
версий выше) говорят JQuery, что вы хотите специальную обработку для tab
события, в частности, вы хотите предоставить «обработчик обертывания», который делает не что иное, как вызов e.preventDefault()
перед вызовом предоставленного обработчика событий.
UPDATE: предотвращено по умолчанию tap
-Settings от перезаписи, для будущих посетителей
ПРИМЕЧАНИЕ: Перед тем, как делать какие-либо попытки по изменению поведения по умолчанию вещей, вы должны спросить себя, почему значения по умолчанию не работают для вас. В основном потому, что изменение поведения по умолчанию (= ожидаемое) нарушит ваше будущее (или, что еще хуже, другое лицо), при сохранении кода и добавлении функций.
Для создания поддерживаемого (и прогнозируемого) потока в коде предлагаемое решение для создания специальной функции ($.fn.tap
) на самом деле является очень жизнеспособным решением, так как оно не мешает стандартным (= ожидаемым) поведение вещей.
Из приведенных ссылок вы также можете создать свой собственный тип события (например, tapOnly
) и сделать его более очевидным, если есть какая-то индивидуальная работа. Опять же, оба этих решения потребуют от вас изменить привязки событий, которые вы пытаетесь предотвратить.
$ $ .fn.tap' создает функцию, называемую '$ ('# element'). Tap()', она не создает событие – adeneo
function (e) { e.preventDefault(); e.stopPropagation(); } –
попробуйте вернуть false. если вы стреляете по функции в jqyer –