В следующем example есть простое поле ввода и кнопка.jquery change иногда событие предотвращает событие click
<body>
<input type="text" id="in">
<input type="button" value="click" id="button">
</body>
В поле ввода есть функция события изменения и функция click-event-function.
$(document).ready(function() {
$('#in').change(function() {
console.log('change event');
//window.alert('change event');
});
$('#button').click(function() {
console.log('click event');
});
});
При изменении значения поля ввода и сразу нажать кнопку (не выходя из курсора), мое ожидание, что оба события увольняют. К сожалению, это поведение зависит от кода, выполняемого внутри функции изменения, например. при раскомментировании строки window.alert событие click не запускается - или функция click-event-function не выполняется. Зачем? Как я могу избежать кода, который предотвращает выполнение функции click-event-function?
Update: вместо window.alert, то jquery.hide имеет same effect
$(document).ready(function() {
$('#in').change(function() {
console.log('change event');
$('#hide').hide();
});
$('#button').click(function() {
console.log('click event');
});
});
alert() является модальным, это объясняет это –
Поскольку вы на самом деле не нажимали кнопку. вы вместо этого оставили вход, тогда браузер сразу же застыл, ожидая, пока вы нажмете кнопку ok в сообщении. Пока он * заморожен * или * заблокирован *, вы не можете взаимодействовать со страницей. Чтобы исправить это, не используйте предупреждение. –
все еще блуждающий, что вы ищете? – anand4tech