2

jQuery UI を使用して、htm ファイルをダイアログ ボックスに動的に読み込みます。このダイアログ ボックスから、別の htm ファイルを読み込んで別のダイアログ ボックスを作成しています。ロードが完了すると、いくつかの HTML コードを #test div タグに動的に挿入します。2 つのダイアログ ボックスを初めて開いたときは問題なく動作しますが、それらを閉じてから再度開くと、コードが挿入されません。2 番目のダイアログ ボックスを閉じてから再度開くと、正常に動作するようになりました。だから私の質問は次のとおりです。なぜjqueryは2回目にdiv IDを見つけられないのですか?

ここに私のテストコードがあります:

Main.js:

function opendialog1()
{
  $("#popup1").empty().load("dialog1.htm").dialog({title:"Dialog 1",width:300, height:200});
}

function opendialog2()
{
  $("#popup2").empty().load("dialog2.htm",Dialog2Loaded).dialog({title:"Dialog 2",width:300, height:200});
}

function Dialog2Loaded()
{
  var html="This is a test";
  $("#test").append(html); 
}

index.html:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0   Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <link type="text/css" href="css/custom-theme/jquery-ui-1.9.0.custom.css" rel="stylesheet" />

    <script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
    <script type="text/javascript" src="js/jquery-ui-1.9.0.custom.min.js"></script>
    <script type="text/javascript" src="Main.js"></script>
    </head>

    <body>

    <a href="#" onclick="opendialog1();">Open Dialog 1</a>

    <div id="popup1"></div>

    </body>
    </html>

Dialog1.htm

  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
    <html><head>
    <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"> 
    </head>

    <body>

    <a href="#" onclick="opendialog2();">Open Dialog 2</a>

    <div id="popup2"></div>

    </body></html>

Dialog2.htm:

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
    <html><head>
    <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"> 
    </head>

    <body>

    <div id="test"></div>

    </body></html>
4

1 に答える 1

1

ダイアログを閉じると、div get が削除されます。Chrome の dev tolls (または FireBug) を使用して DOM を検査し、close() 呼び出し後にどのように変化するかを確認します。

于 2012-10-24T23:02:41.980 に答える