【发布时间】:2014-08-13 14:50:52
【问题描述】:
当我第一次初始化数据表时,像 click、highlight 行这样的 jQuery 选择器可以正常工作。
oTable = jQuery('.zebra').dataTable( {
"bFilter": false,
"iDisplayLength": 25,
"aLengthMenu": [[25], [25]],
"bProcessing": true,
"bJQueryUI": true,
"aaData": ${subscriptions},
"fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
jQuery(nRow).attr("id",iDisplayIndex);
jQuery("#pointSlider", nRow).spinner();
jQuery(".save").button();
return nRow;
},
"aoColumns": [
{"mData":"user_id", "bSortable": false},
{"mData":"subscription_id", "bSortable": false},
{"mData":"user_name", "bSortable": false},
{"mData":"subscription_frequency", "bSortable": false},
{"mData":"subscription_price", "bSortable": false},
{"mData":"kamuer_first_name", "bSortable": false, "sDefaultContent": null},
{"mData":"kamuer_username", "bSortable": false, "sDefaultContent": null},
{"mData":"points_user", "bSortable": false, "sDefaultContent": null,
"mRender": function (data, type, full){
return '<input id="pointSlider" value= "' + data +'" type="number" min="0" step ="1"/>';
},
},
{"mData":"save", "bSortable": false, "sDefaultContent": null,
"mRender": function (data, type, full){
return '<img class="save" src="${applicationScope.contextURL}/rsrc/images/results/Green_Check.png" width="20px" title="Save this record" />';
}
}
]
});
jQuery(".zebra tbody tr").on('click', function(e) {
if ( $(this).hasClass('row_selected') ) {
$(this).removeClass('row_selected');
}
else {
oTable.$('tr.row_selected').removeClass('row_selected');
var aData = oTable.fnGetData(this);
$(this).addClass('row_selected');
}
});
jQuery(".save").on('click', function (e) {
var userId = jQuery(this).closest('tr').find('td').eq(0).html();
var subscriptionId = jQuery(this).closest('tr').find('td').eq(1).html();
var points = jQuery(this).closest('tr').find('#pointSlider').val();
var baseURL = "<%= request.getContextPath()%>/commission/updateCommission";
var data = "userId=" + userId + "&subscriptionId=" + subscriptionId + "&points=" +points;
var URL = baseURL;
jQuery.ajax({
type: 'POST',
url: URL,
data: data,
success: alert ("done")
});
});
jQuery("#subscriptions_search").click(function (e) {
var startDate = jQuery("#startDate").val();
var endDate = jQuery("#endDate").val();
var baseURL = "<%= request.getContextPath()%>/commission/getSubscriptions";
var data = "startDate=" + startDate + "&endDate=" + endDate;
var URL = baseURL;
jQuery.ajax({
type:'GET',
url: URL,
data: data,
success: function (data) {
refreshTable(data);
}
});
});
function fnGetSelected( oTableLocal )
{
return oTableLocal.$('tr.row_selected');
}
function refreshTable(json)
{
oSettings = oTable.fnSettings();
oTable.fnClearTable(this);
oTable.fnAddData(json.subscriptions);
oTable.fnDraw();
}
当用户需要更改数据时调用 refreshTable。数据加载正常,hpwever jQuery 选择器和与数据表的交互丢失,我一直在尝试各种方法但无法开始工作。
我想知道为什么一个简单的 jQuery 选择器在数据重新加载后无法工作?在这里感谢任何帮助。
【问题讨论】:
标签: javascript jquery datatable jquery-selectors jquery-datatables