如果有兄弟姐妹,则jQuery siblings()似乎包括选择器,但没有选择器



我有一个带有以下成功函数的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)的全部。

相关内容