ajax调用后出现Jquery错误

时间:2014-05-12 23:45:59

标签: javascript jquery ajax

我在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不是函数

在这一行

  

$("#USERINFO&#34)的对话框。("开&#34);

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 个答案:

答案 0 :(得分: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>');
}