5

ajax 呼び出しの後、メッセージ ボックスに divbufを追加していますが、ダイアログを再度開いた後にテキストが表示されます。Chrome、firefox、IE 8 では問題なく動作しますが、IE 7 では動作しません。


編集済み:リンクをクリックするとダイアログウィンドウが開きます。次に、ajax リクエストを実行してメッセージを取得します。このメッセージは、ダイアログのボタンをクリックした後、ダイアログ ウィンドウ (一部の div) に表示されます。ただし、IE7 では、ダイアログ ウィンドウを再度開いた後にメッセージが表示されます。

$("#promised_pay_dialog").dialog({
        buttons: {
            "some button": function(){
                if ($('#confirm').is(':checked')) {
                    $.ajax({
                        url: 'ajax/promisedPayment',
                        type: "POST",
                        data: {
                            subsId:$("#sid").val()
                        },
                        success: function(buf){
                            $('#message_box').html(buf);
                            return false;
                        }
                    });
                }
                else {
                    alert("some message");
                }
            },
            "some button": function() {
                $(this).dialog("close");
            }
        },
        show: {
            effect: "blind",
            duration: 1000
        },
        hide: {
            effect: "explode",
            duration: 1000
        },
        modal: true,
        resizable: false,
        width: 550,
        height: 250
    });

問題を解決しましたが、満足のいくものではありませんでした:

リンクをクリックしたら、createDialog("")引数なしで関数を呼び出します。ajax リクエストの後、メッセージを受け取り、 を呼び出しますcreateDialog(buf)。しかし、それは良い解決策ではないと思います。何か案は?

function createDialog(mess){
    $('#message_box').html(mess);
    $("#promised_pay_dialog").dialog({
        buttons: {
            "some button": function(){
                if ($('#confirm').is(':checked')) {
                    $.ajax({
                        url: 'ajax/promisedPayment',
                        type: "POST",
                        data: {
                            subsId:$("#sid").val()
                        },
                        cache:false,
                        success: function(buf){
                            createDialog(buf);
                        }
                    });
                }
                else {
                    alert("some message");
                }
            },
            "some button": function() {
                $(this).dialog("close");
            }
        },
        show: {
            effect: "blind",
            duration: 1000
        },
        hide: {
            effect: "blind",
            duration: 1000
        },
        modal: true,
        resizable: false,
        width: 550,
        height: 250
    });
}
4

1 に答える 1

0

.html()IE6-8 の問題についてはわかっています

以下を置き換えてみてください

$('#message_box').html(buf);

$('#message_box').empty().html(buf);
于 2013-07-18T07:46:46.710 に答える