JQuery - указатель мыши и если - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь запустить hover, но только если данный элемент имеет определенный класс.

Например:

jQuery

$("#banner").hover(
  if ($(this).hasClass("bannerReady")) {
  function() {
    runOne();
  },
    function() {
      runTwo();
    }
}
);

Но это не такработать.

Я пытался использовать его таким образом, и это будет работать, но тогда jQuery не будет знать, что имя класса тем временем изменилось, и он будет работать:

if ($(this).hasClass("bannerReady")) {
  $("#banner").hover(

    function() {
      runOne();
    },
      function() {
        runTwo();
      }
  );
}

Ответы [ 2 ]

0 голосов
/ 28 апреля 2019

hover() - это просто метод-оболочка для добавления обработчика mouseenter и mouseleave за один раз.

https://api.jquery.com/hover/

Делегирование позволяет нам прикреплять события к селекторам, которыев настоящее время не существует на странице.

https://learn.jquery.com/events/event-delegation/

$('body').on('mouseenter', '#banner.bannerReady', runOne);
$('body').on('mouseleave', '#banner.bannerReady', runTwo);

Прикрепив события к телу (которое всегда существует) и делегировав его для селектора #banner.bannerReady, вы можете прикрепить события ко второй страницезагружает и запускает их, только если баннер действительно соответствует селектору.

Если есть более конкретный селектор, в котором находится баннер, вы можете использовать его вместо body.

0 голосов
/ 28 апреля 2019

.hover() ожидает получения двух функций, поэтому вы не можете передать ему оператор if.Измените это так:

$("#banner").hover( function() {
      if ( $("#banner").hasClass("bannerReady") ) runOne();
  }, function() {
      runTwo();
  }
});
...