我从弹出的位置选择了值。当我选择控件通过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?
答案 0 :(得分: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
});
希望有所帮助。