0

値が選択された場所からポップアップが表示されます。値を選択すると、コントロールは ajax 呼び出しを介してサーバーに送られ、コールバック メソッドで HTML ページが生成されます。

このようにdivに値をdivに設定しようとしました。

$("#CIMtrek_dvDialogListCtrlPlaceholder_CIMtrek_DailyshipCo_CustomerName").replaceWith($('#CIMtrek_dvDialogListCtrlPlaceholder_CIMtrek_DailyshipCo_CustomerName', msg).html());

上記の行を使用すると、値がdiv初めて設定されますが、その後、新しい値を選択してajax呼び出しが発生するたびに、値が設定されず、初めて設定したものは何でも残ります。

アップデート:

値を設定するために使用する ajax メソッド:

function getCustomerDetails(customerName,viewName) {
    var global = window.document

        $.ajax({
             type: "POST",
            url: viewName,
            data: {
                id: customerName
            },
            success: function (msg) {


                global.getElementById("CIMtrek_dvDialogListCtrlPlaceholder_CIMtrek_DailyshipCo_CustomerName").innerHTML = $('#CIMtrek_dvDialogListCtrlPlaceholder_CIMtrek_DailyshipCo_CustomerName', msg).html();

                alert($('#CIMtrek_dvDialogListCtrlPlaceholder_CIMtrek_DailyshipCo_CustomerName', msg).html());
                alert($('#CIMtrek_dvDialogListCtrlPlaceholder_CIMtrek_DailyshipCo_PackingMethod', msg).html());

                $("#CIMtrek_dvDialogListCtrlPlaceholder_CIMtrek_DailyshipCo_CustomerName").replaceWith($('#CIMtrek_dvDialogListCtrlPlaceholder_CIMtrek_DailyshipCo_CustomerName', msg).html());
                $("#CIMtrek_dvDialogListCtrlPlaceholder_CIMtrek_DailyshipCo_PackingMethod").replaceWith($('#CIMtrek_dvDialogListCtrlPlaceholder_CIMtrek_DailyshipCo_PackingMethod', msg).html());

            }
        });

}

新しい値を div に更新するにはどうすればよいですか?

4

1 に答える 1

2

AJAX が最初は機能するが、その後は機能しないという事実から判断する.replaceWith()と、ノードを HTML フラグメントに置き換えると、すべてのイベント ハンドラーが削除される可能性があります。

アプリの有効期間を通じて削除されないノードを使用して.on()、またはノードでイベント ハンドラーを登録する必要があります。.delegate()

あなたがこの構造を持っていると仮定しましょう:

<div id="mybase">
   <div class="mysel">
       <select name="test"><option /> ... </select>
   </div>
</div>

そして、次のようにイベント ハンドラーを登録するとします。

$('#mybase input[name="test"]').change(function() {
    // replace $('#mybase .mysel') with something that has the same dropdown
});

これで、イベント ハンドラーがなくなり、ドロップダウンを変更してもイベント ハンドラーが起動されません。

代わりにこれを行うことができます:

$('#mybase').on('change', 'input[name="test"]', function() {
    // replace $('#mybase .mysel') with something that has the same dropdown
});

それが役立つことを願っています。

于 2012-12-19T07:15:53.457 に答える