2011-10-07 55 views
0

我對IE7和jQuery Load的回調有問題。 所有瀏覽器免除IE7正確啓動我的加載函數的回調。只是無法找出解決方案。jQuery在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'); 
}); 

感謝您的幫助。

+0

任何錯誤信息?你的問題有點含糊。 – Alex

+1

您正在爲兩個連續語句中的完全相同的DOM元素執行選擇器查詢。你怎麼可能看不到這是多餘的? –

+0

不幸的是,沒有錯誤消息... :( 什麼問題在兩個連續的語句中選擇相同的元素? –

回答

0

我最近有這個問題;我相信(但我不確定)它是一種競爭條件。

當使用帶有文檔片段的jQuery .load(在您的案例中爲'/index.php?id=19 #cd_content')時,整個文檔通過AJAX獲取。看來在這一點上,回調啓動在同一時間解析AJAX加載的文檔,所需的選擇器塊被提取和解析出來,並將ID添加到您自己的文檔。

但是,在解析出塊並將其添加到文檔中時,回調已經開始運行。當然,這個回調沒有做任何事情,因爲在運行時它所選擇的元素還沒有被插入。

我的解決方案是爲了避免這個問題:我修剪了AJAX加載的文檔,以便我不需要加載一個片段,從而避免競爭條件。

+0

不幸的是我無法修剪裝載了Ajax的文檔,我想我會嘗試使用$加載內容。 ajax() –

0

這是我會怎麼做:

$(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

試過看起來像「/ page1/page2」的realURL。沒有解決問題。我嘗試使用$ .ajax()加載內容。 –