2

私はいくつかの HTML に対して Ajax GET を実行しており、次の方法で div を設定しています。

$(theDiv).html(theHtml)

この HTML には、次の方法で jQuery ダイアログを表示するボタン (「ボタン A」としましょう) が含まれています。

$(selector).dialog({modal:true});

「ボタンA」をクリックすると、毎回ダイアログが表示されます。ただし、ダイアログ内に [キャンセル] リンクを含めました。キャンセル リンクが起動します。

$(selector).dialog("close")

ほとんどの場合、うまく機能することに気付きました。ただし、Ajax GET が終了した直後に「ボタン A」をすばやくクリックすると、キャンセル リンクでダイアログが閉じません。ダイアログの右上にある「X」ボタンは常に機能しますが、私が苦労しているのはキャンセル ボタンです。

これを無駄に機能させるために、さまざまなことを試しました。これは、Firefox 3.5.9 と IE 7 で発生しています。Firebug を使用して.dialog('close');ステートメントの後にブレークポイントを配置すると、画面の背景色が灰色から白に変わりますが、ダイアログは開いたままです。私は次のようにして問題を強制しようとさえしました:

$(selector).css("display", "none"); 

無駄に。

なんらかの理由で、Ajax GET が初めて起動したときに、この問題が発生することはありません...そのため、ページにアクセスして初めて GET を実行すると、毎回機能します。ただし、ページにとどまり、DOM がまだロードされている間に GET を起動し続けると、おそらく 50% の時間しか機能しません。

誰でも喜んで提供してくれるどんな助けにも感謝します!

ありがとう、

アンディ

4

2 に答える 2

0

「キャンセル」ボタンをクリックした時点では、JavaScript の準備ができていないようです。アラートが表示される前にキャンセル ボタンをクリックできる場合は、ajax が読み込まれたページの document.ready イベントでアラートをポップするようにしてください。javascript はあなたよりも遅いだけです。

そのようなものを追加するだけです:

<script type="text/javascript">
$(function() {
    alert('Javascript ready');
});
</script>
于 2011-09-03T03:20:39.037 に答える
0

キャンセル ボタンを使用して事前にダイアログを作成してから、ボタン A で開くコマンドを使用してみましたか。

<script>
    $(document).ready(function () {
        $(selector).dialog({
            modal: true,
            autoOpen: false,
            buttons: { 'Cancel': function () { $(this).dialog('close'); } }
        });
    });
</script>

次に、ボタン A でもクリックします。

$(selector).dialog('open');
于 2011-09-03T03:32:28.573 に答える