是否可以迭代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选择器来操作每个问题,但它失败了。
答案 0 :(得分:3)
使用$.each
$($.map(function(...) {
return ...;
})).each(function(item) {
// Do something
});