【问题标题】:jQuery UI Dialog Error: b("<div></div>").addClass("ui-widget-overlay") is undefinedjQuery UI 对话框错误:b("<div></div>").addClass("ui-widget-overlay") 未定义
【发布时间】:2010-03-23 13:40:10
【问题描述】:

我的对话框有以下代码,其中包含一个下拉字段

KPMS.ServiceRequests.Status = {

 showOptions : function(requestId, userId, requestType) {
  var url = BASE_URL+'service_requests/status_options/';

        $("#dialog-modal").dialog("destroy");
  $("#dialog-modal").load(url, {"request_id": requestId, "user_id": userId, "request_type":requestType}).dialog(
   {
    modal: true,
    title: "Update Status",
    buttons: {
     Cancel : function() {
      $(this).dialog('close');
     },
     Update: function() {
      alert(1);
     }
    }
   }
  );    
 }
}

有一个锚标记来填充对话框

<a onclick="KPMS.ServiceRequests.Status.showOptions(9, 11, 'SR'); return false;" title="Update status" href="http://localhost/kitco/pms/#9"><img alt="[E]" title="Update" src="http://localhost/kitco/pms/images/edit.png"></a>

我的问题是当我第一次单击链接时,对话框会正确填充。 然后我使用取消按钮关闭了对话框,然后再次单击链接打开对话框并关闭它。 第三次点击链接时出现以下 Javascript 错误,并且对话框未打开

Error: b("<div></div>").addClass("ui-widget-overlay") is undefined
Source File: http://localhost/kitco/pms/js/jquery-ui-1.8rc3.custom.min.js
Line: 199

如何解决这个问题?

【问题讨论】:

  • 您应该使用未最小化的 jQuery 版本来帮助调试。另外,请尝试使用一个调试器(如 firebug 或 IE8 内置的调试器),它可以让您跟踪调用堆栈。

标签: javascript jquery jquery-ui dialog widget


【解决方案1】:

为什么你不断破坏和重建对话框,为什么不只构建一次对话框并加载/更改对话框 div 的内容?我认为应该可以解决问题

【讨论】:

  • 我认为它可以解决我之前尝试使用 destroy 的技巧,发现这种方法更好
【解决方案2】:

真的是b吗?不应该是$ 还是jQuery

编辑:没关系,这是一个内部 jQuery 调用,所以这解释了 bb 应该是 jQuery 对象 (var b = this) 的别名,这意味着 div 创建工作正常,但 addClass 不是/正在返回 undefined

您是否以application/xhtml+xml 发送文件?在使用 XTML 而不是 HTML 时,我使用 jQuery 1.4 和 jQuery UI 1.8 有很多 trouble。只是预感。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2013-10-27
    • 1970-01-01
    • 2012-02-27
    • 2019-04-15
    相关资源
    最近更新 更多