Это выводит 456 на оба Data
элемента и консоль (как ожидалось):функция JQuery действует асинхронно
function getData() {
jQuery('#Data').html(456);
}
jQuery(function($) {
getData();
console.log($('#Data').html()); //456
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="Data">123</div>
Это выводит 456 к
Data
элементу, но консоль показывает он не изменился как 123:
function getData() {
jQuery(function($) {
$('#Data').html(456);
});
} //getData
jQuery(function($) {
getData();
console.log($('#Data').html()); //123
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="Data">123</div>
Ввод
console.log()
в тайм-аут фиксирует это:
function getData() {
jQuery(function($) {
$('#Data').html(456);
});
} //getData
jQuery(function($) {
getData();
setTimeout(function() {
console.log($('#Data').html()); //456
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="Data">123</div>
я могу обойти эту проблему, но это удивительно.
Является ли это ошибкой или ожидаемой функциональностью?
Означает ли это, что документ готов к работе несколько раз? –
@RickHitchcock, в вашем примере, нет.Это связано с тем, что вы присоединяете обработчик событий только один раз, когда вы вызываете 'getData' – AmmarCSE
В моих втором и третьем примерах я прикрепляю его дважды (?) –