2013-05-30 44 views
0

我正在使用Django制作博客应用程序。 在我post_edit.jspost_save()功能,我有这个帖子editt操作:Django/JQuery语法错误:我不知道为什么我得到这个错误

$.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));)

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

谢谢

+ 此外,还有另一种混乱。

的“结果”是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)); 应该提取结果“丽”的元素,但它看起来是 全部退回“ UL”块...

+0

你得到的错误是什么? – karthikr

+0

发生这种情况时,“结果”的价值是什么? – Pointy

回答

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

应该

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

或者,也许

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

取决于什么是你想达到和你的HTML结构。

错误的来源是$的第二个参数应该是DOM context or JQuery element用作元素搜索树顶部(即只搜索后代)。用你的代码,你试图在htmlString下找到li,这显然是一个错误。所以,很可能这只是一个丢失或错位)

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

+0

hm ...我只是试了一下,但得到了完全相同的错误:( – user2436815

+0

@ user2436815你能装配一个[jsFiddle](http://jsfiddle.net/)的例子来重现你的bug并更新这个问题吗? – J0HN