【问题标题】:jquery ui combobox not found the second time after an ajax callajax调用后第二次找不到jquery ui组合框
【发布时间】:2012-12-07 03:50:43
【问题描述】:

我们在站点网格装饰器 JSP 的标题标签中加载 jquery 脚本,如下所示:

<head>
<script src="${prefix}/resources/js/jquery/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="${prefix}/resources/js/jquery/jquery-ui-1.8.20.custom.min.js" type="text/javascript"></script>
</head>

现在我正在创建一个自动完成组合框,例如 @http://jqueryui.com/resources/demos/autocomplete/combobox.html

点击标签时,我正在将另一个 jsp 加载到如下对话框中:

$.ajax({
url: <some url>,
success: <create my dialog>
});

对话框中的这个 JSP 也被 sitemesh 修饰,并且在它的标记中具有相同的脚本。 对话工作正常,但现在在这个 ajax 调用之后,我的 combobox() 停止工作并且在控制台上出现错误:

$().combobox 不是函数..

这对我来说是一个紧迫的缺陷。以前有人遇到过这个问题吗?是否与jquery脚本缓存或加载有关?

我们可以在 Firefox 和 IE 9 中重现此问题。

【问题讨论】:

  • 您能否展示您的实际代码,或者在 jsFiddle 上展示您的问题的演示?
  • 您是否看到任何错误? Javascript 错误?
  • 问题是我的组合框 javascript 代码在本地脚本中,并且在 ajax 调用时没有重新加载 js 文件。我将组合框组件代码移动到解决问题的通用 js 中。

标签: jquery autocomplete combobox sitemesh


【解决方案1】:

ComboBox 不是 jQueryUI 的典型特性。如果您检查您提供的演示页面的页面源代码,您会注意到该小部件是在从第 31 行开始的脚本标记中声明的:

    <script>
(function( $ ) {
    $.widget( "ui.combobox", { //... et cetera

在组合框演示中显示的 JS 文件中的某处包含小部件定义,看看这是否能解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-03
    • 2023-03-22
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多