2015-04-29 2 views
1

Во-первых, я должен сказать, что это происходит, когда я добавляю динамические строки в динамическую таблицу.Почему, когда я использую метод click(), результат повторяется?

В методе datosGuardados У меня есть объект, который я хочу показать для консоли отладки Chrome.

datosGuardados: function(problema){ 

var self = this; 

var objTareas = new Object(); 

objTareas.tareas = aTareas; 
objTareas.descripcionProblema = problema; 
objTareas.idTareaSeleccionada = $('#nombre_trabajador_id').val(); 
objTareas.nombreTrabajador = $('#nombre_trabajador_id option:selected').text(); 

console.info(objTareas); 
return objTareas; }, 

И это метод AccionBotonEnviar, который содержит кнопку:

AccionBotonEnviar: function(data){ 

var self = this;  
$("#btn_enviar_formulario_id").click(function(){ 

    self.datosGuardados(); 

}); }, 

Если добавить строку в таблице и распечатать без использования кнопки, она показывает мне:

Object {tareas: Array[2], descripcionProblema: "aaa", idTareaSeleccionada: "2", nombreTrabajador: "Trabajador 2"} 

Но с помощью кнопки напечатать:

Object {tareas: Array[2], descripcionProblema: "aaa", idTareaSeleccionada: "2", nombreTrabajador: "Trabajador 2"} 
Object {tareas: Array[2], descripcionProblema: "aaa", idTareaSeleccionada: "2", nombreTrabajador: "Trabajador 2"} 

ДВАЖДЫ ...

А если добавить две строки, и нажмите на кнопку, печать три ..

В чем проблема?

+1

Где-то в вашем коде вы снова и снова привязываете один и тот же обработчик кликов. Hack fix - это '$ (" # btn_enviar_formulario_id "). Off ('click'). Click (function() {', но вы действительно должны найти корень проблемы, где функция снова вызывается – charlietfl

+0

Это решило мою проблему! Но вы говорите, что проблема - это что-то еще? –

+0

Да, вы вызываете ту же функцию, когда вы не ожидаете (или должны). Вероятно, в методе add row – charlietfl

ответ

0

Где-то в вашем коде вы снова вызываете функцию, которая снова и снова связывает новый обработчик. вероятно, в методе, который добавляет новые строки.

Вы можете отвязать существующий с помощью:

$("#btn_enviar_formulario_id").off('click').click(function(){ 
     self.datosGuardados(); 
}); 

, но так как это не требуется повторно вызвать функцию, вероятно, нужно удалить его оттуда, где она вызывается снова

+0

Спасибо, в любом случае странно, потому что в этом модуле, Я снова не вызываю функцию, но я снова проверю. –

Смежные вопросы