2014-05-12 38 views
1

我使用Jquery的對話功能的onclick事件...jQuery的錯誤

$(document).ajaxComplete(function() 
{ 
    $("#titleName").on("click",function(e) 
    {    
     $("#userInfo").dialog("open"); 
     e.preventDefault(); 
    }) 
}) 

我使Ajax調用加載的div之一,它工作得很好..

$("ul#accordion li a").on('click', function (e) 
{ 
    $("#mainContent").load(this.href); 
}); 

Ajax調用後,onclick拋出這個錯誤(兩次)..

類型錯誤:未定義是不是一個函數

在該行

$( 「#用戶信息」)對話框( 「開放」)。

ajax請求再次引入JQuery庫(因爲請求中的數據表需要它們)。

1)我不知道如何避免兩次加載JQuery,同時使它工作。

2)我不完全確定,如果加載兩次導致問題。

我在兩個頁面使用這個嘗試,但它不工作

<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script> 

編輯: 其實下面的答案固定onclick問題(貌似jQuery是沒有加載兩次)但現在的數據加載此請求沒有任何樣式或JavaScript應用。

當我在新頁面中打開這些請求時,它們工作正常。但是,當加載一個Ajax請求時,它只有簡單的數據(沒有樣式)。

+1

你鏈接到jquery-ui正確嗎? –

+0

知道哪一行會引發該錯誤會很有幫助。放置斷點。 –

+0

是的..我沒有鏈接它的權利..所有的jQuery的功能工作正常之前,阿賈克斯電話...... – user3630411

回答

0

錯誤TypeError : undefined is not a function意味着.dialog被視爲未定義的元素,而不是作爲函數,這意味着您沒有正確導入的函數。你已經提到其他jQuery函數可以工作,但對話框小部件來自jQuery UI,而不是核心jQuery庫,所以你需要確保你已經導入了兩者。如果jQuery UI被正確加載,.dialog將被識別爲一個函數,而不是undefined。但是,如果您已經正確導入了jQuery和jQuery UI,那麼很可能如您所懷疑的那樣,當您的ajax請求被調用時,您的問題來自jQuery的重新加載。你可以包裝你的腳本加載,以避免再次添加它:

if (typeof jQuery == 'undefined') { 
    document.write('<script type="text/javascript" src="jquery-1.11.0.min.js"></script>'); 
} 
+0

我可以在我的頁面源代碼中看到這些腳本.. user3630411

+0

編輯我要評論添加更多相關信息避免兩次導入jQuery可能會解決你的問題 –

+0

實際上.dialog也在ajax調用之前工作..它在ajax調用之後拋出這個錯誤我仍然可以在源代碼中看到對腳本的引用.. – user3630411