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 回答