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

$('#checkingDeposit').on('click', { amount: 100, account: 'savings' }, bank.deposit);


deposit: function(event, amount, account) {
  console.log('deposit running');
  console.log(event.data);   //object of key value pairs
  console.log(event.data.account);    //output 'savings'
  console.log(event.data.amount); //output 100
  this[event.data.account] += event.data.amount;
  console.log(this[event.data.account]);  //NaN
  return this[event.data.account];
}

Получаю ли я NaN, когда пытаюсь console.log this[event.data.account], потому что я пытаюсь передать строку (например, «сбережения») этому объекту?

Заранее спасибо Брэд

1
newcasio 23 Сен 2018 в 00:34

1 ответ

Лучший ответ

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

let bank = {
  deposit:50
};

$('#checkingDeposit').on('click', function(event) {
  deposit(event, {amount:100, account:'savings'}, bank.deposit)
});
    
    
function deposit(event, obj, account){
  console.log('deposit running');
  console.log(obj.account);    //output 'savings'
  console.log(obj.amount); //output 100
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button" id="checkingDeposit">Deposit</button>
1
Scott Marcus 22 Сен 2018 в 21:58