IE не уважает последовательность выполнения строки JavaScript? - PullRequest
0 голосов
/ 11 октября 2011

Я пытаюсь анимировать с помощью jQuery, но в IE7 / 8/9 он не работает до того, как я показываю элемент.

function callback() {
    $('#content').animate([...]);
    [...]
}

$('#content').hide();
[...]
$('#content').show();
callback();

Это работает только тогда, когда я делаю setTimeout(function() { callback(); }, 300);, может бытьнужно дождаться, пока IE распознает элемент, который был показан, прежде чем выполнять обратный вызов.В чем здесь проблема?

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Вам нужно подождать, пока элемент будет существовать на странице, прежде чем вы сможете выбрать его с помощью jQuery.

оберните ваш скрипт с помощью:

jQuery(function($){
  //your code here
});

Это ярлык для document.ready слушатель событий.

0 голосов
/ 11 октября 2011

Поскольку JS является однопоточным только потому, что вы вызываете show (), это не значит, что он на самом деле показывает; вам нужно вернуть управление родителю, чтобы он мог рисовать и обновлять DOM до того, как это произойдет. setTimeout позволяет вашему JS уступать родителю, обновляя его, прежде чем продолжить выполнение. setTimeout с 0, скорее всего, также будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...