Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему если обернуть js код в функцию код перестаёт работать?

Давид Мейстер Мастер (2089), на голосовании 1 год назад
Не работаетРаботаетВ консоле ошибки нет
Голосование за лучший ответ
Яков Гото Искусственный Интеллект (321111) 1 год назад
Потому что твой "this" внутри вложенной функции - это не элемент, по которому произошел клик... а стандартный контекст объекта window. Попробуй добавить в начало этой вложенной функции строчку "console.log(this)" и нажать кнопку - сам увидишь... а потом сделай то же самое, только без функции.
Давид МейстерМастер (2089) 1 год назад
Спасибо, я даже как то об этом не подумал
Яков Гото Искусственный Интеллект (321111) Если тебе нужно передать контекст, просто добавь аргументы. Типа такого...
 $(document).on('click', 'button', function () { 
   function ok (e) { 
      console.log(e); 
   } 
   ok($(this)) 
}) 
В этом случае "e" будет идентично this внутри функции. Ну почти.
Похожие вопросы