2015-10-30 3 views
1

У меня сегодня мозговой пердит или что-то в этом роде, потому что, когда я установил событие on('click'), он стреляет, как будто он был нажат.jQuery on ('click', function()) неожиданно срабатывает

var myJsFunctions = { 
    confirmDelete: function (index) { 
     $('#deleteRecipient').modal('show'); 
     $('#confirmRecipientDeletion').on('click',myJsFunctions.deleteRecipient(index)); 
    }, 

    deleteRecipient: function (index) { 
     $('#deleteRecipient').modal('hide'); 
     $('#recipientIsDeleted_' + index).val(true); 
     $('#recipient_' + index).hide(); 
    } 
} 

, но когда я нажимаю кнопку, что пожары confirmDelete, она проходит весь путь через myJsFunctions.deleteRecipient а.

ответ

5

Это происходит из-за того, что вы фактически вызываете свою функцию, и вы передаете результат выполнения функции обработчика из инструкции return.

Вы должны передать функции обработчика вместо:

$('#confirmRecipientDeletion').on('click', function() { 
    myJsFunctions.deleteRecipient(index); 
}); 
+0

иногда, тьфу. В последнее время я слишком много работал с нокаутом –

0

Вы сделали ошибку на синтаксисе нажмите Jquery. Измените ваш код так:

var myJsFunctions = { 
confirmDelete: function (index) { 
    $('#deleteRecipient').modal('show'); 
    $('#confirmRecipientDeletion').on('click',function(){ 
     myJsFunctions.deleteRecipient(index); 
    }); 
}, 

deleteRecipient: function (index) { 
    $('#deleteRecipient').modal('hide'); 
    $('#recipientIsDeleted_' + index).val(true); 
    $('#recipient_' + index).hide(); 
} 

}