Bien des gens l'utilisent croyant se faciliter la tâche mais bien souvent ce n'est pas le cas si tu ne connais pas un minimum le CSS et si tu n'es pas curieux de lire la documentation très abondante, voire peut-être trop.Envoyé par Beginner.
Ce ne sont pas des boîtes noires mais plutôt de bêtes noires, non je déconne. Les sources sont à disposition et il est toujours intéressant de voir ce qu'il y a sous le capot, déjà cela démystifie la bête et c'est souvent très instructif quant à la manière d'aborder les choses.Envoyé par Beginner.
Sur des <table> de grande dimension cela peut effectivement être intéressant mais il faut regarder dans ce cas les performances dues aux parcours des événements. C'est donc au cas par cas voire en fonction de tes besoins/habitudes.Envoyé par Beginner.
Bien des choses peuvent être réalisée comme par exemple tester le type de l'événement dans un handler commun.
C'est tout à fait faisable et ce de plusieurs manièresEnvoyé par jreaux62
Par exemple en modifiant le HTML par emplacement de l'élément concerné :
ou encore en utilisant le CSS et la déclaration pointer-events: none sur l’élément concerné :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 // une fois la page chargée document.addEventListener("DOMContentLoaded", () => { // récup. href de la page const docHref = document.location.pathname.split("/").pop(); // récup. des liens de la page => collection existante const linksPage = document.links; // c'est parti ! for (let link of linksPage) { // on n'a pas besoin du nom complet, du hash et du search const href = link.getAttribute("href").split(/[#|?]/).shift().split("/").pop(); // occcurence trouvée if (docHref === href) { const parent = link.parentElement; const newNode = document.createElement("SPAN"); newNode.textContent = link.textContent; newNode.classList.add("active"); parent.replaceChild(newNode, link); } } });
Les deux méthodes, il y en a sûrement d'autres mais je n'ai que ces deux en stock, traitent le element.getAttributes("href") qui est succinct et non pas le element.href qui lui contient l'URL complète.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 document.addEventListener("DOMContentLoaded", () => { // récup. href de la page const docHref = document.location.pathname.split("/").pop(); // récup. des liens de la page => collection existante const linksPage = document.links; // c'est parti ! for (let link of linksPage) { // on n'a pas besoin du nom complet, du hash et du search const href = link.getAttribute("href").split(/[#|?]/).shift().split("/").pop(); console.log(link.href) console.log(href) // occcurence trouvée if (docHref === href) { link.classList.add("active"); // ou encore mettre -> link.href="#"; } } });
cette démarche est surprenante, perso c'est quand il y en avait marre d'écrire de la prose pour pas trop de choses que je regardais s'il y avait pas un équivalent en jQuery. J'ai trouvé à chaque fois.Envoyé par Doksuri
J'ai toujours privilégié le « vanilla » mais lorsque l'on a un plugin qui fait bien le job et bien on passe à jQuery sans regret, c'est intellectuellement moins satisfaisant mais tellement plus rapide .
Comme les API ont évoluées et empruntées beaucoup à jQuery il est vrai que cela devient de moins en moins utile.
Partager