如何迭代jquery.map的输出?

时间:2014-05-02 02:39:45

标签: javascript jquery dom

是否可以迭代jQuery' $.map函数返回的值?

更新:问题是我在第一个迭代器中返回一个jQuery对象
return $('row').append(generateItem(response.items,item,index));
一旦我返回一个常规对象,它就可以正常工作。

编辑:感谢下面的建议,我已经想出了如何迭代$.map函数的输出。但是,我仍然无法操纵$.map

的输出

TLDR;迭代#1- generateItem()返回一个jQuery对象。       迭代#2尝试将返回的jQuery对象的选择部分附加到DOM元素。这不起作用。

$($.map(response.items, function(item, index){
    // don't wrap this in a $() selector
    return generateItem(response.items,item,index);

    })).each(function(index,question){
      console.log(question)
      // => [prevObject: x.fn.x.init[1], context: document, selector: "row", jquery: "1.10.2", constructor: function…]

      var container = $('<article>').addClass('row');

      // With header, I am trying to grab the jQuery object returned by the $.map function, but it fails         
      var header = $(question).find('header');
      console.log(question) // => x.fn.x.init[0] 

      var sidebar = $('<section>').addClass('col-md-4 sidebar').html(header);
      var body = $(question).find('main.question');

      var content = $('<section>').addClass('col-md-8 content').html(body);
      var footer = $(question).find('footer');

      container = $(container).append(sidebar).append(content).append(footer)

    $('main.bottom').append(container);
  });

如何访问$.map的返回值? $()似乎无法运作。

我在AJAX请求中使用$ .map。 questions通过将数据包装在适当的DOM元素中来准备DOM插入的数据。 generateItem是一个通用函数,它根据项目是问题还是答案来准备数据。

var questions = $.map(response.items, function(item, index){
  return generateItem(response.items,item,index);
});

我想迭代questions,因此我可以按部分向DOM添加元素(例如,向左添加标题,向右添加标题,在其下面添加页脚)。 (我在第一个$ .map之外执行此操作,因为我不想以同样的方式添加问题和答案。)

问题是jQuery的$ .map返回一个奇怪的对象,我无法访问innerHTML值。

var tidyResponses = $.map(questions, function(question,index) {
  console.log(question) => [prevObject: x.fn.x.init[1], context: document, selector: "row", jquery: "1.10.2", constructor: function…]
  => [prevObject: x.fn.x.init[1], context: document, selector: "row", jquery: "1.10.2", constructor: function…]
});

任何人都知道$ .map返回什么样的对象,以及如何与它进行交互?我试图在tidyResponses中使用jQuery选择器来操作每个问题,但它失败了。

1 个答案:

答案 0 :(得分:3)

使用$.each

$($.map(function(...) {
  return ...;
})).each(function(item) {
  // Do something
});