2010-10-26 80 views
0

我有一個心跳間隔,每隔幾秒調用一次函數。然後這個函數通過jQuery向服務器發送一個JSON請求,服務器像往常一樣返回JSON響應和一個成功的jQuery函數。在成功函數中,它執行另一個jQuery函數,每個id都是一個foreach。從每個id調用另一個函數,函數(this)。然後該函數通過jQuery發出另一個JSON請求並獲取數據。jQuery:IE返回ID爲空

例如爲:

function function() { 
jQuery.noConflict()(function($){ 
    $.ajax({ 
    success: function(data){ 
    jQuery.each(data.ids, function() { 
    function2(this); 
    } 
    }); 
    }); 
}); 
} 

function function2(id) { 

//In IE id is empty here 

jQuery.noConflict()(function($){ 
    $.ajax({ 
    // In IE id has data here in it, WTF 
    success: function(data){ 
    //In IE id is empty here 
    } 
    }); 
}); 
} 

而且,要記住這些都不是真正的函數名,只是在這裏至於實際的問題是什麼一個例子。問題是在IE 7和IE 8中,id變量是EMPTY。在其他瀏覽器中,ID永遠不會爲空。我不明白爲什麼。有人可以幫我嗎?

感謝

回答

1

我不知道IE如何處理你的語法,多不需要jQuery.noConlict()電話,而不是您的通話(如果你需要$內)應該是這樣的:

function function2(id) { 
(function($){ 
    $.ajax({ 
    success: function(data){ 
    } 
    }); 
})(jQuery); 
} 

或替代,包所有功能在一個(function($) { /* code */ })(jQuery);之內,如果需要,還可以調用.noConflict()

+0

感謝您指出。 – SoLoGHoST 2010-10-26 05:12:24

1

Yeesh,它看起來像你找到了jQuery的交叉兼容性打嗝。我試着將.each()綁定到this,並使用console.log(),直到找到腳本停止工作的位置。使用IE的開發者工具(命中f12),你應該至少可以追蹤到這個問題。

+0

即使我面臨同樣的問題,因爲你在ajax中完成有時IE不知道該DOM – kobe 2010-10-26 03:14:44