jQuery UI对话框 – closures后不打开
我有一个jQueryUI的对话框的问题。 问题是,当我closures对话框,然后我点击链接触发它,它不会popup,除非我刷新页面。 如何在不刷新实际页面的情况下调用对话框。 看一看:
$(document).ready(function() { $('#showTerms').click(function() { $('#terms').css('display','inline'); $('#terms').dialog({ resizable: false, modal: true, width: 400, height: 450, overlay: { backgroundColor: "#000", opacity: 0.5 }, buttons:{ "Close": function() { $(this).dialog("close"); } }, close: function(ev, ui) { $(this).remove(); }, }); });
谢谢
你实际上应该使用$("#terms").dialog({ autoOpen: false });
初始化它。 然后你可以使用$('#terms').dialog('open');
打开对话框, $('#terms').dialog('close');
closures它。
嗨,我设法解决它。
我用摧毁,而不是closuresfunction(这没有任何意义),但它的工作!
$(document).ready(function() { $('#showTerms').click(function() { $('#terms').css('display','inline'); $('#terms').dialog({resizable: false, modal: true, width: 400, height: 450, overlay: { backgroundColor: "#000", opacity: 0.5 }, buttons:{ "Close": function() { $(this).dialog('**destroy**'); } }, close: function(ev, ui) { $(this).close(); }, }); }); $('#form1 input#calendarTEST').datepicker({ dateFormat: 'MM d, yy' }); });
在最后一行,不要使用$(this).remove()
使用$(this).hide()
来代替。
编辑:澄清,在closures点击事件,你正在从DOM删除#terms
div,这就是为什么它不回来。 你只需要隐藏它。
我相信你一次只能初始化对话框。 上面的例子试图每次点击#terms时初始化对话框。 这会造成问题。 相反,初始化应该发生在点击事件之外。 你的例子应该看起来像这样:
$(document).ready(function() { // dialog init $('#terms').dialog({ autoOpen: false, resizable: false, modal: true, width: 400, height: 450, overlay: { backgroundColor: "#000", opacity: 0.5 }, buttons: { "Close": function() { $(this).dialog('close'); } }, close: function(ev, ui) { $(this).close(); } }); // click event $('#showTerms').click(function(){ $('#terms').dialog('open').css('display','inline'); }); // date picker $('#form1 input#calendarTEST').datepicker({ dateFormat: 'MM d, yy' }); });
我想,一旦你清楚了,就应该解决你所描述的“打开链接”的问题。
对我来说这个方法是有效的
单击对话框上的X或单击“Bewaren”可以closures对话框。 我添加一个(任意)的id,因为我需要确保每一个html添加到dom后被删除。
$('<div id="dossier_edit_form_tmp_id">').html(data.form) .data('dossier_id',dossier_id) .dialog({ title: 'Opdracht wijzigen', show: 'clip', hide: 'clip', minWidth: 520, width: 520, modal: true, buttons: { 'Bewaren': dossier_edit_form_opslaan }, close: function(event, ui){ $(this).dialog('destroy'); $('#dossier_edit_form_tmp_id').remove(); } });
<button onClick="abrirOpen()">Open Dialog</button> <script type="text/javascript"> var $dialogo = $("<div></div>").html("Aqui tu contenido(here your content)").dialog({ title: "Dialogo de UI", autoOpen: false, close: function(ev, ui){ $(this).dialog("destroy"); } function abrirOpen(){ $dialogo.dialog("open"); } }); //**Esto funciona para mi... (this works for me)** </script>
这是一个超古老的线程,但由于答案甚至说“这没有任何意义”,我想我会添加答案…
原来的post使用$(this).remove(); 在closures处理程序中,这实际上会从DOM中删除对话框div。 试图再次初始化对话框将无法正常工作,因为div被删除。
使用$(this).dialog('destroy')调用在对话框中定义的方法destroy,它不会从DOM中删除它。
从文档:
破坏()
彻底删除对话function。 这会将元素返回到其“>> pre-init”状态。 此方法不接受任何参数。
这就是说,只有在你有充分的理由的情况下,才能消灭或移除。
$(this).dialog('destroy');
作品!
.close()是通用的,可以用来引用更多的对象。 .dialog('close')只能用于对话框
我使用对话框作为对话框文件浏览器和上传,然后我重写这样的代码
var dialog1 = $("#dialog").dialog({ autoOpen: false, height: 480, width: 640 }); $('#tikla').click(function() { dialog1.load('./browser.php').dialog('open'); });
一切似乎都很好。
我有jquery-ui覆盖对话框相同的问题 – 它只会工作一次,然后停止,除非我重新加载页面。 我在其中一个例子中find答案 –
在同一页面上叠加多个
flowplayer_tools_multiple_open_close
– 谁会有,虽然,对吗? 🙂 –
重要的环境似乎是
oneInstance: false
所以,现在我有这样的 –
$(document).ready(function() { var overlays = null; overlays = jQuery("a[rel]"); for (var n = 0; n < overlays.length; n++) { $(overlays[n]).overlay({ oneInstance: false, mask: '#669966', effect: 'apple', onBeforeLoad: function() { overlay_before_load(this); } }); } }
一切正常
希望这有助于某人
O.
jQuery文档有一个链接到这篇文章“ jQuery UI对话框的基本用法 ”,它解释了这种情况以及如何解决这个问题。
- 如何分开捆绑供应商脚本,并根据需要使用Webpack?
- addEventListener vs onclick
- 在React.js中编辑丰富的数据结构
- 单加在javascript运算符
- 什么是“事件发射器”?
- 为什么我不使用Child.prototype = Parent.Prototype而不是Child.prototype = new Parent(); 为JavaScriptinheritance?
- 为什么在控制台的JavaScriptvariables声明导致“undefined”被打印?
- 如何检测window.print()完成
- 在asp.net mvc中如何平铺通过JsonResult返回的ExpandoObject?