我有AJAX代码,它返回需要渲染的HTML:
success: function (html) {
此处html
是:
<div class="item">...</div>
<div class="item">...</div>
<div class="item">...</div>
<div class="item">...</div>
我需要逐个渲染它,所以需要提取它们但是某些东西不起作用
我没有得到<div class="item">...</div>
我得到[Object object]
:
success: function (html) {
var ctrls = [];
$(html).each(function (index, value) {
if ($(this).attr('class') == 'item') {
ctrls.push(value);
...
我之前从未使用过.each
。
答案 0 :(得分:3)
您希望找到与您的类选择器THEN匹配的元素。根据您的评论,您的元素似乎真的在容器内,因此find
是您想要的操作。如果你实际上有一组操作filter
将是正确的选择。
$(html).find('.item').each(function() {
ctrls.push(this);
});
注意,如果您需要匹配元素的文本(HTML),请使用
$(html).find('.item').each(function() {
ctrls.push($(this).html());
});
但是,通常,在操作DOM元素时,最好存储实际元素而不是文本值。如果您要将处理程序直接附加到它们,尤其如此,因为如果您转换为HTML以便操作它们,处理程序的附件将会丢失。