3

2つのjQueryUIダイアログ(互いに関連はありませんが、どちらもこの動作を示しています)があり、最初に開いたり閉じたりしたときに完全に動作します。再開することはありませんが、初めて閉じた場合。以下はそれらの1つのコードであり、もう1つは同じ構造です。'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コードが削除されるのですか?」ということだと思います。

4

2 に答える 2

5

$(qr).dialog({...})ダイアログを初期化して一度だけ開きます。もう一度開きたい場合は.dialog('open')、要素を呼び出す必要があります。

更新された質問について:ダイアログは、コンテンツを元の場所から移動し、スタイルを設定してコンテナーにラップしてから、ドキュメントの最後に追加します。ただし、ダイアログ要素を取得する方法は、移動されたため、現在は機能しません。

DOMをトラバースするのではなく、IDを使用してダイアログコンテンツを参照することをお勧めします。クリックされている要素のデータ属性としてそのIDを保存できます。

于 2012-08-21T03:47:56.943 に答える
1

エラーを再現できません。完全なコードをJSFiddleできますか?

モーダルを起動する前に、モーダルでdestroyを呼び出してみてください。

$(":ui-dialog").dialog("destroy");
于 2012-08-20T23:27:03.213 に答える