DirecTwiX
@DirecTwiX
"display: flex;" уже предлагали?

Как перенести функцию добавления обработчика в объект?

codepen.io/anon/pen/gMOrwa

1) Есть:
$('div:first-child').click(function () {
  console.log(this);
  obj.foo1();
});


Хочется перенести это в obj.init():
var obj = {
  div: $('div'),
  init: function() {
    $('div:nth-child(2)').click(function () {
      counter++;
      this.div.text(counter);
    });
  }
};


Ключевой момент:
this.div.text(counter);


Можно как-нибудь провернуть? Чтобы в обработчике клика был контекст объекта?

2) Почему не работает :last-child селектор?
$('div:last-child').click(function () {
  alert(1);
  obj.foo1();
});
  • Вопрос задан
  • 115 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
var obj = {
  div: $('div'),
  onClick: function () {
      counter++;
      this.div.text(counter);
  },
  init: function() {
    $('div:nth-child(2)').click(this.onClick.bind(this));
  }
};


Почему не работает :last-child селектор?
https://jsfiddle.net/5jrpsxnd/1/
Ответ написан
DirecTwiX
@DirecTwiX Автор вопроса
"display: flex;" уже предлагали?
Сейчас случайно обнаружил, что для моего случая отлично подходят стрелочные функции:
var obj = {
  div: $('div'),
  init: function() {
    $('div:nth-child(2)').click(() => {
      counter++;
      this.div.text(counter);
    });
  }
};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы