Alors peut-être que je ne cherche pas aux bons endroits mais je ne trouve pas une bonne explication sur la façon de faire l'équivalent de jQuery
$('a').click(function(){
// code here
});
en vieux JavaScript pur?
Fondamentalement, je veux exécuter une fonction à chaque fois que l'on clique sur une balise a
mais je n'ai pas la possibilité de charger jQuery dans la page pour le faire de la manière ci-dessus, donc j'ai besoin de savoir comment le faire en utilisant JavaScript simple.
Exemple de travail: http://jsfiddle.net/6ZNws/
Html
<a href="something">CLick Here</a>
<a href="something">CLick Here</a>
<a href="something">CLick Here</a>
Javascript:
var anchors = document.getElementsByTagName('a');
for(var z = 0; z < anchors.length; z++) {
var elem = anchors[z];
elem.onclick = function() {
alert("hello");
return false;
};
}
element.addEventListener('click', function() { ... }, false);
Vous devez localiser les éléments et faire une boucle pour connecter chacun d'eux.
Essayez ce qui suit
var clickHandler = function() {
// Your click handler
};
var anchors = document.getElementsByTagName("a");
for (var i = 0; i < anchors.length; i++) {
var current = anchors[i];
current.addEventListener('click', clickHandler, false);
}
Remarque: Comme l'a souligné Ӫ _._ Ӫ, cela ne fonctionnera pas sur IE8 et inférieur car il ne prend pas en charge addEventListener
.
Sur IE8, vous pouvez utiliser ce qui suit pour vous abonner à onclick
. Ce n'est pas un substitut parfait car il nécessite que tout le monde soit coopératif, mais il peut vous aider
var subscribeToOnClick = function(element) {
if (element.onclick === undefined) {
element.onclick = clickHandler;
} else {
var saved = element.onclick;
element.onclick = function() {
saved.apply(this, arguments);
clickHandler.apply(this, arguments);
}
}
}
for (var i = 0; i < anchors.length; i++) {
var current = anchors[i];
subscribeToOnClick(current);
}
document.getElementById('elementID').onclick = function(){
//click me function!
}
Voici:
[].forEach.call( document.querySelectorAll( 'a' ), function ( a ) {
a.addEventListener( 'click', function () {
// code here
}, false );
});
Démo en direct: http://jsfiddle.net/8Lvzc/3/
(ne fonctionne pas dans IE8)
Aussi, je recommande la délégation d'événement ...
Cela affectera une fonction onclick
à chaque élément a
.
var links = document.getElementsByTagName("a");
var linkClick = function() {
//code here
};
for(var i = 0; i < links.length; i++){
links[i].onclick = linkClick;
}
Vous pouvez le voir en action ici .