#javascript #jquery
Вопрос:
Моя карточная игра запускает событие щелчка для всех карт после загрузки DOM. Мой код изначально выглядел так
$.each(cardArray, function(i,value){ var activeCard = $('lt;div class="cardContainer" title="' cardArray[i]['name'] '" gt;' cardArray[i]['damage'] 'lt;/divgt;'); activeCard.click(doStuff(i,activeCard)); }
но после поиска некоторых других полезных ответов на ту же проблему я обнаружил, что это связано с (), приводящим к выполнению функции, поэтому мой новый вызов должен выглядеть так
$.each(cardArray, function(i,value){ var activeCard = $('lt;div class="cardContainer" title="' cardArray[i]['name'] '" gt;' cardArray[i]['damage'] 'lt;/divgt;'); activeCard.click(doStuff); }
К сожалению, это означает, что я остаюсь без возможности передавать нужные мне переменные. Каковы возможные решения или лучшие практики здесь?
Комментарии:
1. попробуйте что-нибудь вроде этого
activeCard.click(() =gt; doStuff(i,activeCard));
2. Это вызвало другие проблемы, но решило мою первоначальную проблему и остановило их запуск — можете ли вы объяснить, что это на самом деле сделано или как/почему это решает мою проблему?
3. вам нужно передать функцию, а не результат выполнения функции, как вы это сделали. мой последний комментарий такой же, как
activeCard.click(function() { doStuff(i,activeCard) });