2017-03-18 2 views
0

J'ai essayé d'arrêter un survol de la souris et la fonction mouseout après un événement de clic, mais il ne fonctionne pas:Comment arrêter mouseover et la fonction mouseout après un événement click

document.querySelectorAll('.box').forEach(function(x){ 
     x.addEventListener("mouseover", function() { 
      video = this.querySelector('video'); 
      if (video.muted == true) { 
       video.muted = false; 
      } else { 
       video.muted = true;} 
     }, false) 
     x.addEventListener("mouseout", function() { 
      this.querySelector('video').muted = true; 
       }, false) 
     x.addEventListener("click", function() { 
      this.off('mouseover').; 
     }) 

Ce que je suis en train est de jouer la vidéo avec son après un clic, mais à la place, elle continue avec l'effet mouseover.

Merci! et désolé pour le mauvais anglais

+0

'NodeList.forEach()' est pas [disponible sur tous les navigateurs] (https://developer.mozilla.org/en -US/docs/Web/API/NodeList/forEach # Browser_Compatibility) et 'this' est un noeud DOM normal et non un objet jQuery, donc il n'y a pas de méthode' .off() '(que le navigateur devrait vous indiquer dans son console). Recherchez la contrepartie de ['.addEventListener()'] (https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) – Andreas

Répondre

0

Utilisez removeEventListener pour supprimer gestionnaire d'événement attaché

function mouseoverfunc() { 
      video = this.querySelector('video'); 
      if (video.muted == true) { 
       video.muted = false; 
      } else { 
       video.muted = true;} 
     } 
document.querySelectorAll('.box').forEach(function(x){ 
     x.addEventListener("mouseover",mouseoverfunc, false) 
     x.addEventListener("mouseout", function() { 
      this.querySelector('video').muted = true; 
       }, false) 
     x.addEventListener("click", function() { 
      this.removeEventListener('mouseover',mouseoverfunc); 
     })