2011-05-16 120 views
1

我有以下脚本的正常工作:

$.ajax({ 
    url: 'serverside_script', 
    type: 'GET', 
    dataType: 'json', 
    error: function(xhr, status, error) { 
     alert('Error: ' + status + '\nError Text: ' + error + '\nResponse Text: ' + xhr.responseText); 
    }, 
    success: function(results) { 
     var len = results.length; 

     for(i=0; i<len; i++) { 
      $("#tabs").tabs("add","tabs.aspx?tab=" + results[i].key, results[i].value) 
     }; 
    } 
}); 

是否有可能转换的for循环更jquery的类型$。每次循环?

回答

7

为什么是这样。提供的函数最多可以接受两个参数:首先是键,最后是迭代的单个对象。

$.each(results, function(i, obj) { 
    $("#tabs").tabs("add","tabs.aspx?tab=" + obj.key, obj.value) 
}); 

有关jQuery.each函数的更多信息,请参阅the reference

+0

打了我几秒钟:D – barfoon 2011-05-16 15:18:41

+0

额外的右大括号吃了你的代码@line 3.:[ – lsuarez 2011-05-16 15:19:42

0
$.each(results, function(index, item) { 
    $("#tabs").tabs("add","tabs.aspx?tab=" + item.key, item.value) 
}); 
1

有更好的表现:

var tabs = $("#tabs"); 
$.each(results, function(index, item) { 
    tabs.tabs("add","tabs.aspx?tab=" + item.key, item.value); 
}); 

执行$( “#标签”)每次都是没有必要的。

+0

+1用于缓存'$(“#tabs”)'选择。在循环内重新运行它是错误的。 – user113716 2011-05-16 15:23:48