我在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请求时,它只有普通数据(没有样式)。
答案 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>');
}