Нравится / не нравится гиперссылка не работает в объектно-ориентированной манере?

Расширение ответа @ Мохамеда. Вы можете использовать небольшую инкапсуляцию

Как это:

jQuery.fn.mouseIsOver = function () {
    if($(this[0]).is(":hover"))
    {
        return true;
    }
    return false;
}; 

Использовать его как:

$("#elem").mouseIsOver();//returns true or false

Спрятать скрипку : http://jsfiddle.net/cgWdF/1/

0
задан thinkvantagedu 27 February 2019 в 17:37
поделиться

2 ответа

Проблема в том, что this.like внутри функции likeGame() не совпадает с this.like в функции Homepage(), потому что функция имеет свою область видимости. Один из способов решить эту проблему - использовать функции-стрелки в качестве методов. Теперь this всегда будет ссылаться на Homepage.

function Homepage() {

  this.like = document.getElementById("like");
  this.dislike = document.getElementById("dislike");


  this.likeGame = (event) => {

    if (this.like.style.display == "none") {
      this.dislike.style.display = "none"
      this.like.style.display = "block";
    }
    event.preventDefault();
  };
  this.dislikeGame = (event) => {
    if (this.dislike.style.display == "none") {
      this.like.style.display = "none"
      this.dislike.style.display = "block";
    }
    event.preventDefault();
  };
  this.setListeners = () => {
    console.log('in listen');
    document.getElementById("hyperLike").addEventListener("click", this.likeGame);
    document.getElementById("hyperDislike").addEventListener("click", this.dislikeGame);
  }
}

var homepage = new Homepage();

window.addEventListener("load", () => {
  homepage.setListeners();
})
<html>

<body>
  <p style="display:block">
    <a id="hyperLike" href="">Like</a>/<a id="hyperDislike" href="" ;>Dislike</a> the game.
  </p>
  <p id="like" style="display:none">
    good
  </p>
  <p id="dislike" style="display:none">
    bad
  </p>

</body>

</html>

0
ответ дан extempl 27 February 2019 в 17:37
поделиться

Следующая демонстрация может связать несколько элементов с любым применимым событием и функцией обратного вызова. Преимущество использования этого класса заключается в том, что параметры selector, event и callback могут быть любыми, и для нескольких слушателей не нужно предпринимать никаких дополнительных шагов.


Демо

Подробности прокомментированы в демо

Это модификация кода, представленного в этом [ 116] в статье .

Другие вопросы по тегам:

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