Javascript ajax调用后的Jquery错误
我正在为Jquery对话框函数使用onclick事件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
$( 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中的第一个脚本结束标记处关闭。