我有一个带有以下成功函数的ajax调用:
success: function(response){
console.log($(response).siblings());
$(response).siblings().each(function(){
alert("foo");
var thing_id = $(this).attr("id").split("-")[0];
alert(thing_id);
$("#"+thing_id).append(this);
})
使用此DJANGO模板(稍微匿名化)对响应进行响应:
{% for thing in things %}
<div id="{{ thing.something.id }}-pc">
<div>
<span class="tablename">Something Else</span>
{% include '<some template>' with table=thing.something_else %}
</div>
</div>
{% endfor %}
sibling()的文档指出不包括选择器,这就是我看到的模板中只有一个 thing in things
,但是如果我有一个以上,我会在循环中提醒两个顶级divs。
是怎么回事?!
编辑(更好的问题):当我有2个时,为什么我会获得两个顶级divs,但是当我在 $(response)
上调用 siblings()
时只有1个?
似乎我正在误解我选择的$(response)
。谁能澄清?
"那么当我说
$(response)
时我要选择什么?"
可以为您提供一个jQuery对象,其中包括 response
字符串中顶级元素的所有 all 。如果有三个顶级元素,则$(response).length
将为3
。
$(response).siblings()
然后为您提供所有顶级元素的所有兄弟姐妹,并且因为每个元素都是对方的兄弟姐妹(S)再次返回所有顶级元素。
如果只有一个顶级元素,则没有兄弟姐妹。
显然.siblings()
是在这里使用的错误方法,但是我不确定该如何建议您使用什么,因为您所需的结果仍然不清楚。
您可以使用以下方式循环浏览每个顶级元素
$(response).each(function() {...
要获得一个特定的,您可以使用.eq(someZeroBasedIndex)
,例如$(response).eq(1)
获取第二个。
获得除第一个可以使用 $(response).slice(1)
的全部。