2013-05-30 45 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