Обновление: это относится только к jQuery 1.8 и ниже.Это было исправлено в jQuery 1.9 .
Вот мой минимальный пример jsfiddle: http://jsfiddle.net/8fuEJ/. Я использую Google Chrome, если это имеет значение.
У меня есть флажок:
<input type="checkbox" id="wtf">
И у меня есть обработчик событий jquery:
$('#wtf').click(function(ev) { alert(this.checked); });
Пока все хорошо.Когда я нажимаю флажок, я сначала вижу появившийся флажок, а затем предупреждение "true" (в этом порядке).Когда я нажимаю на нее снова, я вижу, что галочка исчезает, а затем появляется предупреждение «ложь».
Проблема возникает, когда я программно запускаю событие щелчка.Например:
$('#wtf').click(function(ev) { alert(this.checked); });
$('#wtf').click();
В этом случае сначала я вижу предупреждение «ложь» (с пометкой все еще не видно), , а затем после закрытия оповещения появляется пометка.
Почему здесь разница в порядке?
Также обратите внимание, что если я использую обработчик событий change
, он работает как положено.
$('#wtf').change(function(ev) { alert(this.checked); });
$('#wtf').click();
Здесь я вижупоявится галочка, затем предупреждение "true".