2012-09-08 30 views
1

我有一塊JavaScript,我在其他頁面中使用得很好,但是在新頁面中拋出HierarchyRequestError。這讓我懷疑這是我頁面中的HTML問題。下面是代碼的一個大大的簡化版本(這仍然產生錯誤):jQuery UI對話框錯誤導致HierarchyRequestError按鈕

window.webframe.loginDialog = function() { 
    $("body").append('<div id="dialogSpace" />'); 
    $("#dialogSpace").load("/login/index #loginContainer", function() { 
     $("#loginContainer").dialog({ 
      buttons: 
      [ 
       { 
        text: "Hi", 
        click: function() 
        { alert('Hi');} 
       } 
      ] 
      }); 
    }); 
}; 

$('#lnkLogin').click(function() { 
    webframe.loginDialog(); 
    return false; 
}); 

如果我運行此代碼,我從jQuery的出現以下錯誤:

HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy

如果我刪除按鈕定義那麼錯誤就會消失。如果按鈕選項本身存在,則沒有區別,但如果我放入任何類型的單個按鈕處理程序,則會發生錯誤。我也嘗試了在選項中定義按鈕的兩種樣式。

我使用的是jQuery 1.7.2和jQuery UI 1.8.23,我試過升級到jQuery 1.8而沒有任何改變。

正如我上面所說,我強烈懷疑這是一個HTML結構問題,因爲完全相同的代碼文件可以在其他頁面工作,並且我會繼續查看,但是這足夠奇怪,我想查看是否這與其他人一起敲響了一個鐘聲。

更新:我經歷了我所有的其他js引用,發現包括jquery.template(https://bitbucket.org/stanlemon/jquery-templates/)是什麼導致它。嘗試更新到最新的,但是這是3歲,問題依然存在。將不得不將我現有的代碼移植到最新的模板庫。

+0

馬修,你可以一起扔一個jsfiddle的html以及。我想刺穿它。 – zmanc

回答

1

這不會是你正在尋找的答案,但我也有同樣的問題。升級到jQuery 2.02和jQuery UI 1.10.4並沒有消除這個問題。最後,我刪除了jquery.template.js。

+0

是的,刪除jQuery.Template是我們最終做的。感謝關注這樣一個老問題。 –