【问题标题】:JQuery UI Dialog with callback in button action fails second dialog open带有按钮操作回调的 JQuery UI 对话框无法打开第二个对话框
【发布时间】:2011-05-18 06:03:00
【问题描述】:

这似乎是一个常见的话题,但我还没有看到有人发布这个特定版本。

<script>
$(document).ready(function() {
   $("#somebutton").click(function() {
       $.get("someurl", function(data){
          $("#PartsDialogDiv").html(data);
          $("#PartsDialogDiv").dialog("open");
       });
    });


   $("#PartsDialogDiv").dialog({
           autoOpen: false,
           width: 600,
           resizable: false,
           modal: true,
           buttons: {
               "Use Part": function() {
                   $.get("someurl", function(data){
                       $("#AnotherDIV").html(data);
                   });
                   $(this).dialog("close");
               },
               "Cancel": function () {
                   $(this).dialog("close");
               }
           }
     });
});
</script>
<div id="PartsDialogDiv"></div>
<div id="AnotherDIV"></div>

当我在执行“使用部件”按钮操作后按下调用 .dialog("open") 的按钮时会发生什么,它无法打开。事实上,它指出:

Object doesn't support this property or method

我感觉第一次按下“Use Part”时的回调未能保留 PartsDialogDiv 上的 dailog 设置,并且它不再知道 div 可以调用该 jquery UI 方法。

由于它全部包含在 $(document).ready() 中,我不确定如何在不将其放入“使用部分”按钮功能的情况下将该 div 重新初始化为对话框。

有没有人经历过这种情况并有任何关于如何处理这种情况的好提示或建议?

提前谢谢你!

这是 MVC3,但不完全确定它是否相关。

ANSWER(因为在发布此问题后的 8 小时内我无法回答自己的问题): 我设法解决了它。 Jen 和 George Cummins 都让我得出这样的结论,即我的片面观点很糟糕。

在我的部分观点中,我包含了以下脚本:

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")"
       type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" 
       type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" 
       type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" 
       type="text/javascript"></script>

它们是自动生成的(或者我出于某种原因盲目地包含它们)并且不需要它们。我删除了它们,一切都按预期工作。

非常感谢大家的宝贵时间!

【问题讨论】:

  • 我不确定我是否正确理解上下文。您可以发布调用 .dialog("open"); 的代码/单击事件吗? ?另外,调用 .dialog("close");不会破坏 DOM 元素,也不会破坏该元素上对话框小部件的任何实例。
  • 添加了附加代码。我知道你的意思是 dialog("close") 不会破坏 DOM。但如果我删除回调,它工作正常。如果我在按钮操作中有回调,它会给出错误,我假设回调删除了对话框元素。什么的。

标签: jquery jquery-ui jquery-ui-dialog jquery-callback


【解决方案1】:

当点击“使用部件”按钮时,听起来好像有什么东西正在改变“#PartsDialogDiv”。我们需要查看代码来代替“// Do something”来确定,但是您可以检查该代码并根据需要进行更改。具体来说,查找对 .destroy() 或 .disable() 的调用。

【讨论】:

  • 我只是在想这可能是问题所在。在这里,我将更新问题以包含一些可能有助于进一步澄清的额外细节。
  • 同意。这是试图帮助某人时的常见问题。如果他们提供残缺/审查的代码,我们很难提供帮助,特别是如果问题出在代码的残缺部分。不过我可以理解,我在工作中处于严格的 CDA 之下,所以当我寻求帮助时,我不能粘贴太多信息。但在这种情况下,这是必不可少的,因为您拥有的是有效代码..所以问题必须在 // 做某事区域内。
  • 太真实了。添加了一些通用代码来更好地表示。很抱歉一开始就没有包括它。
  • 即使使用更新的代码,我也看不到任何会导致此问题的内容。
  • 我提到我正在使用 MVC3。说成功中的“数据”是一个局部的观点会有什么不同吗?据我所知,这只是返回的 html 脚本。除此之外,我很茫然。无论如何感谢您的帮助。
猜你喜欢
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多