在$ .each Jquery上使用计数器

时间:2012-03-03 10:49:30

标签: jquery each

我在使用$ .each的计数器时遇到问题我正在获取JSON提要,然后想要循环结果的“标题”。如果我使用数字然后它可以工作,但当我尝试使用计数器'即var i = 1'时,它不起作用。我认为这与未正确传递给函数的变量有关吗?

由于

  var i = 1;

  $.getJSON("http://www.aaronlumsden.com/api/?json=get_category_posts&slug=portfolio",function(data) {

   $.each(data, function(i) {
                    $('#navScroller').append('<li><a rel=""href="" title="">'+data.posts[i].title+'</a></li>');
                    i++;
                });
 });

4 个答案:

答案 0 :(得分:4)

即使在修复阴影问题时,我也不认为您的代码会像预期的那样工作。

data是一个对象,$.each() [docs]遍历对象的每个属性。到目前为止,我可以看到它有5个属性(这里是JSON):

{
    "status":"ok",
    "count":8,
    "pages":1,
    "category":{...},
    "posts": [...]
}

如果这些是唯一的,$.each()将调用回调五次,这意味着您将获得前五个帖子的标题。或者如果帖子少于5个,您将收到错误。

我认为您实际上想要从响应中迭代所有帖子,这将是:

var $scroller = $('#navScroller');
$.each(data.posts, function(i, post) {
    $scroller.append('<li><a rel=""href="" title="">'+post.title+'</a></li>');
});

如果你有很多帖子,那么事先创建完整的HTML字符串也是有意义的,只需要调用.append() 一次,例如:

$('#navScroller').append($.map(data.posts, function(post) {
    return '<li><a rel=""href="" title="">'+post.title+'</a></li>';
}).join('')); // not sure if you actually need `.join`

答案 1 :(得分:2)

var k = 1;

  $.getJSON("http://www.aaronlumsden.com/api/?json=get_category_posts&slug=portfolio",function(data) {

   $.each(data, function(i) {
     $('#navScroller').append('<li><a rel=""href="" title="">'+data.posts[i].title+'</a></li>');
     k++;
   });
   // Use k here
 });

答案 2 :(得分:0)

each - 函数中。您声明参数i。这会覆盖第一行的var i = 1。删除i中的function(i),我认为没问题。

答案 3 :(得分:-1)

var k = 1;

  $.getJSON("http://www.aaronlumsden.com/api/?json=get_category_posts&slug=portfolio",function(data) {

   $.each(data.posts, function(i) {
     $('.nav').append('<li><a rel=""href="" title="">'+data.posts[i].title+'</a></li>');
     k++;
   });
   // Use k here
 });

我在那个网站上试过了。它正在运作