Comment contrôler uniquement le déclenchement d'un événement une fois?Ne déclenchez un événement qu'une seule fois?
En fait, un rapide Google semble faire allusion au fait que .one aide ..
Comment contrôler uniquement le déclenchement d'un événement une fois?Ne déclenchez un événement qu'une seule fois?
En fait, un rapide Google semble faire allusion au fait que .one aide ..
Vous pouvez utiliser jQuery de one
method, qui souscrira seulement la première occurrence d'un événement.
Par exemple:
$('something').one('click', function(e) {
alert('You will only see this once.');
});
OK, génial, je me demandais juste, quel est le «e» entre vos parenthèses? En outre, cette fonction nécessite-t-elle deux paramètres? 1 pour ce que vous voulez seulement courir une fois, et l'autre pour la fonction? – Qcom
'e' est le paramètre formel de l'événement pour le rappel. Dans ce cas, il est inutilisé. Les deux paramètres sont le type et la fonction de l'événement. –
Génial! C'est vraiment utile, quelle est la différence entre ceci et .bind? Est-ce qu'il n'a pas besoin d'être unbound par quelque chose comme .unbind? – Qcom
vanille js
function addEventListenerOnce(target, type, listener) {
target.addEventListener(type, function fn(event) {
target.removeEventListener(type, fn);
listener(event);
});
}
addEventListenerOnce(document.getElementById("myelement"), "click", function (event) {
alert("You'll only see this once!");
});
http://www.sitepoint.com/create-one-time-events-javascript/
Edit: modification inspirée par la version de la lingue et la terminologie de https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
Modifier 23/11/2016:
once
vient aux navigateurs. Actuellement Chrome 55, Firefox 50, Safari 10,1
Et vous l'utilisez comme ceci:
document.addEventListener(
'DOMContentLoaded',
improveAllTheThings,
{once: true}
);
https://www.webreflection.co.uk/blog/2016/04/17/new-dom4-standards
Identique à la réponse de rofrol , juste une autre forme:
function addEventListenerOnce(element, event, fn) {
var func = function() {
element.removeEventListener(event, func);
fn();
};
element.addEventListener(event, func);
}
De plus, vous pouvez le faire:
window.addEventListener("click", function handleClick(e) {
window.removeEventListener("click", handleClick);
// ...
});
Ajouté les options pour ajouter/supprimer écouteur d'événement:
function addEventListenerOnce(target, type, listener, optionsOrUseCaptureForAdd, optionsOrUseCaptureForRemove) {
const f = event => {
target.removeEventListener(type, f, optionsOrUseCaptureForRemove);
listener(event);
}
target.addEventListener(type, f, optionsOrUseCaptureForAdd);
}
Il suffit d'utiliser l'option appropriée dans votre méthode addEventListener appel:
element.addEventListener(event, func, { once: true })
Non pris en charge par IE. –
Dès que mon représentant remonte à plus de 3000 je vais c hange "élude" à "allusion" –
Oh mon qui était certainement embarrassant. Merci pour ça. – Qcom
Heureux mon commentaire l'a porté à votre attention –