我已将$('#userUVEdit-modal').on('click'
事件定义如下。它已在另一个点击事件中注册。但我不是为什么不止一次被解雇。
$('#usersTable').on('click','.uv-user-edit-btn', function (event) {
event.preventDefault();
var rowData = getJqGridRowData($(this).closest('tr'));
var selectedUserID = $(rowData.userId).find('.uv-user-edit-btn').attr('value');
var isInstanceAlreadyAssigned = $(rowData.instanceName).attr('id');
if(isInstanceAlreadyAssigned && typeof isInstanceAlreadyAssigned != undefined) {
instanceId = isInstanceAlreadyAssigned;
}else {
instanceId = -1;
}
$('#edit-uv-username').val($(rowData.username).html());
var requests_interface = new requests_interface_instance.getAllInstances();
requests_interface.init(requests_callback_instance.getAllInstancesCallBack);
requests_interface.execute();
// THE FOLLOWING FUNCTION IS FIRED MORE THAN ONCE
$('#userUVEdit-modal').on('click','#userUVEditButton', function(event) {
event.preventDefault();
var result = validateRequiredFields('#userUVEdit-modal');
if(result['status']) {
var dataObj = createFormObject('#userUVEdit-modal');
dataObj['user_id'] = selectedUserID;
dataObj['instanceId'] = instanceId; // Tells the previous instance allotted
var requests_interface = new requests_interface_instance.mapUserToInstance();
requests_interface.dataObj = dataObj;
requests_interface.init(requests_callback_instance.mapUserToInstanceCallBack);
requests_interface.execute();
}
});
});
点击#userUVEditButton
后,$('#userUVEdit-modal').on('click','#userUVEditButton', function(event) {
会被触发但会被多次触发。这可能是什么原因?
答案 0 :(得分:1)
我认为是因为每次点击.uv-user-edit-btn
,您都会在#userUVEditButton
上绑定点击事件。尝试off()函数,它将删除事件处理程序,然后on()将在元素上添加事件处理程序。
示例:
$('#userUVEdit-modal').off().on('click','#userUVEditButton', ...
答案 1 :(得分:0)
如果您不想移动内部点击处理程序,可以采用简单的解决方法:
$('#userUVEdit-modal').off('click').on('click' ...