jQuery UI对话框不会重新打开

时间:2012-08-20 23:11:34

标签: jquery-ui modal-dialog

我有两个jQuery UI对话框(彼此无关,但两者都表现出这种行为),在第一次打开和关闭时表现得非常完美。一旦他们第一次关闭,虽然他们不会重新开放。下面是其中一个的代码,另一个具有相同的结构。我不是在任何地方调用'destroy()'或'remove()'所以我不确定为什么这些不能正常工作。这是我的代码:

$(".qr_link").click(function(){
  openQr(this);
});

function openQr(that){
  var title = $(that).parent().parent().children("p.resume-name").text();
  var qr = $(that).parent().parent().children(".qr_image");

  $(qr).dialog({
    title: title,
    width: 'auto',
    height: 'auto',
    modal: true
  });
}

我的标记:

<div class="resume">
  <p class="resume-name"><%= link_to(offer.name, public_url(offer.public_id, :host => ApplicationSetting.short_domain, :params => {:rid => @recruiter_id})) %></p>
  <p id="resume_links">- 
    <%= link_to("QR", "#", :class => "qr_link") %>
    <%= link_to("X", "#", :class => "remove_link") %>
    <%= link_to("Preview", "#", :class => "preview_link") %>
  </p>
  <%= qr_image(public_url(offer.public_id, :host => ApplicationSetting.short_domain, :params => {:rid => @recruiter_id}), "200x200", "hide qr_image")%>
  <p class="resume-tags"><span class="resume-tags-label">Tags: </span><span class="resume-tags-value">
    <%= offer.tags.join(", ") %>
  </p>
  <p class="resume-description"><%= offer.description %></p>
</div>

提前致谢。


更新


所以最初,我在页面加载时加载了qr图像,但我隐藏了它。它在对话框中显示正常,但是当对话框出现时,qr图像将从HTML中删除!所以我想重新格式化的问题是“为什么我的QR码被删除了?”

2 个答案:

答案 0 :(得分:5)

$(qr).dialog({...})初始化并打开对话框一次。如果您想再次打开它,则需要在元素上调用.dialog('open')

关于更新的问题:对话框将其内容从您拥有它的位置移动,将其包装在具有样式的容器中,然后将其附加到文档的末尾。但是,您获取对话框元素的方式现在无法移动。

我建议使用ID来引用对话框内容,而不是遍历DOM。您可以将该ID作为数据属性存储在被单击的元素上。

答案 1 :(得分:1)

我无法复制您的错误。你可以JS完整的代码吗?

在启动模式之前尝试在模态上调用destroy。

$(":ui-dialog").dialog("destroy");