Javascript ajax调用后的Jquery错误

Javascript ajax调用后的Jquery错误,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在为Jquery对话框函数使用onclick事件 $( document ).ajaxComplete(function() { $("#titleName").on("click",function(e) { $("#userInfo").dialog("open"); e.preventDefault(); }) }) 在我调用ajax来加载其中一个div之前,它工作得很好 $("ul#acc

我正在为Jquery对话框函数使用onclick事件

$( 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
抛出此错误(两次)

TypeError:undefined不是函数

在这条线上

$(“#用户信息”)。对话框(“打开”)

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>
!window.jQuery&&document.write(unescape(“%3Cscript src=”js/libs/jQuery-1.4.2.js”%3E%3C/script%3E'))
编辑: 实际上,下面的答案修复了
onclick
问题(看起来JQuery没有加载两次),但是现在这个请求加载的数据没有应用任何样式或javascript


当我在新页面中打开这些请求时,它们工作正常。但是当加载ajax请求时,它只有普通数据(没有样式)。

错误
TypeError:undefined不是一个函数
意味着
。dialog
被视为一个未定义的元素,而不是一个函数,这意味着没有正确导入函数。您已经提到其他jQuery函数正在工作,但是对话框小部件来自jQuery UI,而不是核心jQuery库,因此您需要确保已经导入了这两个函数。如果jQuery UI正确加载,
.dialog
将被识别为一个函数,而不是一个未定义的
对话框

但是,如果您正确地导入了jQuery和jQueryUI,那么正如您所怀疑的,您的问题很可能是在调用ajax请求时重新加载jQuery造成的。您可以这样包装脚本加载,以避免再次添加:

if (typeof jQuery == 'undefined') {  
  document.write('<script type="text/javascript" src="jquery-1.11.0.min.js"></script>');
}
if(typeof jQuery=='undefined'){
文件。写(“”);
}

您是否正确链接到jquery ui?了解哪一行抛出该错误会很有帮助。放置断点。是。。我链接正确..在ajax调用之前,所有jquery函数都工作正常..Daniel。。我应该在jquery.js中放置断点吗?我可以在我的页面源代码中看到这些脚本。。编辑我的评论以添加更多相关信息。避免两次导入jQuery可能会解决您的问题。实际上,在ajax调用之前,dialog也在工作。。它在ajax调用后抛出此错误。我仍然可以在源代码中看到对脚本的引用..是的,然后它肯定会因为重复加载而中断。我不知道为什么要将字符串全部转义,然后通过unescape处理它们——也许这就是错误的一部分?我不知道。但答案肯定在于不加载jQuery两次——您将丢失对以前加载的插件的引用。如果我不使用unescape,脚本标记将在document.write中的第一个脚本结束标记处关闭。