jQuery:IE为ID返回空

时间:2010-10-26 03:08:46

标签: jquery json internet-explorer

我有一个心跳间隔,每隔几秒就调用一次函数。然后,该函数通过jQuery向服务器发出JSON请求,服务器像往常一样返回JSON响应和成功的jQuery函数。在success函数中,它执行另一个jQuery函数,每个id的foreach。从每个id调用另一个函数,函数(this)。该函数然后通过jQuery发出另一个JSON请求并获取数据。

e.g:

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永远不会为空。我不明白为什么。有人可以帮我吗?

由于

2 个答案:

答案 0 :(得分:1)

是的,看起来你发现jQuery的交叉兼容性出了问题。我尝试将.each()绑定到this,然后自由地使用console.log(),直到找到脚本停止工作的位置。使用IE的开发人员工具(点击f12),您应该能够至少追踪问题。

答案 1 :(得分:1)

我不确定IE如何处理您的语法,不需要多个jQuery.noConlict()调用,而是您的调用(如果您需要$内部)应该如下所示:

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

或者,将所有功能包装在一个(function($) { /* code */ })(jQuery);内,并在需要时调用.noConflict()