Ответ 1
Первым аргументом, возвращаемым обработчиком события jQuery, является объект события:
$('#item').change(function(e) {
console.log(e); // The event object
});
То, как я обычно различаю между инициируемым пользователем событием и событием, вызванным кодом, является то, что события, инициируемые пользователем, имеют свойство originalEvent
, прикрепленное к ним. Я не знаю, подходит ли это лучший подход, но я бы сделал это следующим образом:
$('#item').change(function(e) {
if (e.originalEvent) {
// user-triggered event
}
else {
// code-triggered event
}
});
Пример
Введите в элементе input
в приведенном ниже примере, затем переориентируйте элемент. Вы получите предупреждение "user-triggered"
. Нажмите кнопку, чтобы вызвать изменение кода. Вы получите сообщение "code-triggered"
.
$('#item').change(function(e) {
if (e.originalEvent) {
alert('user-triggered')
}
else {
alert('code-triggered')
}
});
$('button').on('click', function() {
$('#item').change();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type=text id=item />
<button>Click here to trigger change</button>