-1

我有一个带有以下成功函数的 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 %}

兄弟()的文档声明不包括选择器,如果我thing in things的模板中只有一个,我会看到这一点,但如果我有多个,我会在循环中收到两个顶级 div 警报。

这是怎么回事?!

编辑(更好的问题):为什么我在有 2 个时得到两个顶级 div,但当我调用时只有 1 个时得到siblings()0 $(response)

好像我误解了我选择的内容$(response)。谁能澄清一下?

4

1 回答 1

1

“那我说的时候选择什么 $(response)?”

这为您提供了一个包含字符串中所有顶级元素的 jQuery 对象。response如果有,比如说,三个顶级元素,那么$(response).length将是3.

$(response).siblings()然后为您提供所有顶级元素的所有兄弟,并且因为每个都是其他元素的兄弟,所以这再次返回所有顶级元素。

如果只有一个顶级元素,则它没有兄弟姐妹。

所以显然.siblings()在这里使用的方法是错误的,但我不确定建议您改用什么方法,因为您想要的结果仍然不清楚。

您可以使用以下命令遍历每个顶级元素:

$(response).each(function() {...

要获得一个特定的,您可以使用.eq(someZeroBasedIndex),例如,$(response).eq(1)获得第二个。

要获得除第一个之外的所有内容,您可以使用$(response).slice(1).

于 2012-11-08T00:52:54.937 回答