2016-04-29 13 views
0

私は$('#userUVEdit-modal').on('click'イベントを次のように定義しました。別のクリックイベントの中に登録されています。しかし、私はなぜそれが二度以上解雇されるのではないのですか? #userUVEditButtonをクリックするとイベントは一度登録されていますが、イベントは複数回起動されます

$('#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(); 
     } 
    }); 
}); 

$('#userUVEdit-modal').on('click','#userUVEditButton', function(event) {が解雇されますが、それを複数回発射されます。これの理由は何でしょうか?

+0

理由は、あなたが毎回 '再びそれを結合していることである.uv -user-edit-btn'をクリックします。 – RRK

答えて

1

私はそれが.uv-user-edit-btnをクリックするたびに、#userUVEditButtonのクリックイベントをバインドしているからだと思います。イベントハンドラを削除するoff()関数を試してから、on()がその要素にイベントハンドラを追加します。

例:

$('#userUVEdit-modal').off().on('click','#userUVEditButton', ... 
0

あなたが内部のクリックハンドラを移動したくない場合は、簡単な回避策:

$('#userUVEdit-modal').off('click').on('click' ... 
関連する問題