0

我正在使用 Django 制作博客应用程序。在我的post_save()函数中post_edit.js,我有这个帖子编辑操作:

$.post(item.find("#post-form").attr("action") + "&ajax" , data, function(result) {
    if (result != "failure") {
        item.before($("li", result));
        item.remove();
        $("ul.posts .edit").click(post_edit);
    }

    else {
        alert("Failed to validate post before saving")
    }   
});

因此,在将博客数据发布到我的 post_list.html 模板后,该if块的第一行从结果中提取li元素并将其插入到作为原始li元素的“项目”之前。

问题是,完成此操作后,我得到一个 JQuery 语法错误:

Error: Syntax error, unrecognized expression: 
    <ul class="posts">
        <li>
            <a href="/post/1" class="title">NEW POST</a> 
            <a href="/save/?id=1" class="edit">[edit]</a> 
            <br /> Tags: 

            <ul class="tags">
                <li>
                    <a href="/tag/tag1">tag1</a>
                </li> 
                <li>
                    <a href="/tag/tag2">tag2</a>
                </li> 
            </ul> <br /> 
        </li> 
    </ul>

我无法弄清楚为什么会出现语法错误,因为该 ul class="posts".../ul块对我来说看起来完全没问题。调试后,我很确定这(item.before($("li", result));)是导致问题的第 3 行。

有人可以帮我找到问题吗?

谢谢

+ 另外,还有一个困惑。

“结果”是ul块:

ul class="posts">
    <li>
        <a class="title" href="/post/1">NEWPOST</a>
        <a class="edit" href="/save/?id=1">[edit]</a>
        <br> Tags:

        <ul class="tags">
            ...
        <br>
    </li>
</ul>

我认为该行item.before($("li", result)); 应该从结果中提取“li”元素,但看起来它正在返回整个“ul”块......

4

1 回答 1

1
item.before($("li", result));

应该

item.before($("li", $(result)));

或者可能

item.before($("li"), result));

取决于您要实现的目标和您的 HTML 结构。

错误的来源是第二个参数 to$应该是一个DOM 上下文或 JQuery 元素,用作元素搜索树的顶部(即只搜索后代)。使用您的代码,您试图在lis 下找到 s htmlString,这显然是一个错误。所以,很可能它只是一个丢失或放错位置的).

如果您试图li在返回的字符串中查找 s ,您应该首先坚持。如果您要在 s 之前插入返回的 html,请使用 second li

于 2013-05-30T14:11:46.517 回答