jQuery Load Callback в IE7 - PullRequest
       18

jQuery Load Callback в IE7

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

У меня проблема с IE7 и обратным вызовом jQuery Load.Все браузеры, кроме IE7, корректно запускают функцию обратного вызова моей загрузки.Просто не могу найти решение для этого.

$('#cd_vk_cinemascreen').load('/index.php?id=19 #cd_content', function() {
 $('#cd_vk_cinemascreen #cd_content').attr('class', 'cm_contentWrapper');
 $('#cd_vk_cinemascreen #cd_content').attr('id', 'nothing');
});

Спасибо за любую помощь.

Ответы [ 2 ]

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

Вот как бы я это сделал:

$( cinemascr ).load( '/index.php?id=19 #cd_content', function () {
    $( '#cd_content', cinemascr ).
        addClass( 'cm_contentWrapper' ).
        [0].id = 'nothing';
});

, где cinemascr кэшируется заранее - я предполагаю, что это статический элемент на странице. В этом случае вы можете кэшировать его при загрузке страницы следующим образом:

var cinemascr = $( '#cd_vk_cinemascreen' )[0];

Возможно, IE7 не нравится формат URL '/index.php?id=19' ...

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

У меня недавно была эта проблема; Я считаю (но не уверен), что это состояние гонки.

При использовании jQuery .load с фрагментами документа ('/index.php?id=19 #cd_content' в вашем случае) весь документ получается с использованием AJAX. Кажется, что в этот момент обратный вызов запускается в то же время , когда анализируется загруженный AJAX документ, извлекается и анализируется нужный блок селектора, а идентификатор добавляется в ваш собственный документ.

Но к тому времени, когда блок проанализирован и добавлен в ваш документ, обратный вызов уже запущен. Этот обратный вызов, конечно, ничего не сделал, потому что во время запуска выбранный элемент еще не был вставлен.

Мое решение состояло в том, чтобы избежать проблемы: я обрезал загруженный AJAX документ так, чтобы мне не нужно было загружать фрагмент, таким образом избегая условия гонки.

...