我有一個有趣的問題,我無法弄清楚它爲什麼會這樣發生。我有數據表和數據出現在選擇變化後,用jQuery的ajax後。我有onclick功能多選。 (它必須在點擊表格時運行,它會改變行的樣式等)我注意到(與調試);當我第一次加載onclick之後點擊行,按預期工作一次。但點擊後第二次加載(選擇更改)它運行2次並點擊後第三次加載它運行3次我不明白髮生了什麼事情。所以需要一些幫助。jquery onclick函數多次運行多次
這是加載表格的選擇更改功能;
// in doc.ready
$('#groupSelect').change(function() {
var group = $('#groupSelect').val();
if (!$.fn.DataTable.isDataTable('#questTable')) //this is for first load
{
GetQuestions(group);
} else //this is for after first load
{
var table = $('#questTable').DataTable();
table.destroy();
table.clear().draw();
GetQuestions(group);
}
});
而這是獲取數據的GetQuestions()函數;
// out of doc ready
function GetQuestions(questGroup) {
$.ajax({
type: 'POST',
dataType: 'json',
contentType: 'application/json',
url: 'SetAudit.aspx/Questions',
data: '{"q_group":"' + questGroup + '"}',
success: function(result) {
$('#questTable').DataTable({
data: result.d,
columns: [{
data: 'q_id'
}, {
data: 'q_text'
}]
});
//this click function runs multiple time at 1 click
$('#questTable tbody').on('click', 'tr', function() {
var table = $('#questTable').DataTable();
var count = table.rows('.selected').count();
$(this).toggleClass('selected');
$('#selectedCount').text('' + table.rows('.selected').count() + '');
});
}
});
}
我不這樣做,如果它可以在ajax成功func中創建它,但它不能在其他地方工作。提前致謝。
是的,先生我不喜歡在開始時使用這個函數在ajax成功。但是當我在外面創建它時(比如你的回答)它不會運行。我認爲我的真正問題是這樣的。這onclick不在其他地方工作。我能做什麼? –
更改事件處理程序簽名:http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elements –
聽起來好像'#questTable tbody'在加載時可能不在DOM中。嘗試將其更改爲'$(document).on(...' –