質問
私はthickboxを使用してウィザードのようなものを実行しようとしていますが、初めてそれを開くときは正常に動作します。次へをクリックすると、開いたdivを閉じて、thickboxで新しいdivを開きたいのですが、どうすればよいですか?次のコードを試しましたが、シックボックスが閉じられるだけで、再度開かれません。
tb_show("", "#TB_inline?height=280&width=620&inlineId=divStart", "");
tb_remove();
tb_show("", "#TB_inline?height=280&width=620&inlineId=divContinue", "");
解決
あなたはこのコードを使用することができます:
//いけない使用tb_remove()関数
$("#TB_window").remove();
$("body").append("<div id='TB_window'></div>");
tb_show("", "#TB_inline?height=280&width=620&inlineId=divContinue", "");
あなたがロードコンテンツのためのiframeを使用している場合:
var p = parent;
p.$("#TB_window").remove();
p.$("body").append("<div id='TB_window'></div>");
p.tb_show("", "#TB_inline?height=280&width=620&inlineId=divContinue", "");
他のヒント
この回答ページにたどり着き、ここで提案されている解決策を試しました。うまく行かなかった。私は古いトリックの 1 つを使用しましたが、ほぼ毎回のようにうまくいきました。この投稿は 3 年以上前のものですが、そのコツを共有したいと思います。秘訣は、window.setTimeout を使用して次の tb_show() の呼び出しを遅らせることです。
window.setTimeout(function(){
tb_show("", "#TB_inline?height=300&width=300&inlineId=confirmDiv&modal=true");
$("#TB_window").css({'border':'0px', 'background':'none'});
},300);
私が使用した他の 2 つのトリックにも注目してください。
モーダルポップアップを表示したかったのですが、HTMLはIDが「confirmDiv」のdiv内にありました。しかし、タイトルとパディングのある通常の厚いボックスが表示されていました。したがって、2 行目は TB_Window から境界線と背景色を削除し、ポップアップ HTML のみを表示します。
また、ポップアップの高さの幅は 250 ピクセルしかありませんでしたが、一般的な高さの幅は 300 ピクセルを使用しました。これにより、コンテンツが少し大きくてもスクロールバーが表示されなくなります。いずれにしても TB_Window は表示されないので、問題ありません。
これが誰かの役に立つことを願っています。
私は答え自分自身を発見しました。私はすべてのステップを含むDIVを開け、そしてちょうど通じJavascriptを示すために、何のdivを決めます。