Когда вы используете .on()
на уровне документа, вы ждете, пока событие пузырится до этой точки. Обработчик событий для любого промежуточного контейнера уже был вызван.
Событие «bubbling» - это процесс, с помощью которого браузер ищет обработчики событий, зарегистрированные родителями этого элемента, который был фактическим оригинальным получателем события , Он работает вверх в дереве DOM. Уровень документа проверяется последним. Таким образом, ваш обработчик, зарегистрированный в .on()
, не будет работать до тех пор, пока этот уровень не будет достигнут. Между тем, второй обработчик событий на «внешнем» уровне достигается первым, и он выполняется браузером.
Таким образом, return false;
в обработчике, зарегистрированном в .on()
, в значительной степени бесполезен , так как это будет призыв к event.stopPropagation()
. Помимо этого, смешивание регистрации обработчика собственных событий с работой, которую будет выполнять библиотека jQuery, вероятно, очень плохая идея, если вы серьезно не знаете, что делаете.
Был задан вопрос точно так же, как этот совсем недавно.
В HTML5 мне нравится этот путь. Также это очень подходит с угловым.
<input type="number" min="0" oninput="this.value = Math.abs(this.value)">