Disons que j'ai un lien dans mon DOM (mais tout élément serait accepté), avec un appel à une fonction Javascript:
function myFunction() { $(this).click(function() { return false; }); // Cancel normal behavior. console.log($(this).attr("href")); }
, et un Fonction Jquery pour remplacer le clic sur ce lien et récupérer son attribut href
(désolé, je travaille dans Jquery, mais n'hésitez pas à répondre en vanilla JS) : p>
<a href="google.com" onclick="myFunction()">
En fait, cela ne fonctionne pas. Habituellement, nous devons pointer sur l ' ID ou la classe d'un élément pour obtenir ses informations; mais si nous ne pouvons pas définir un identifiant ou une classe ou quoi que ce soit et que nous ne traitons que certains liens dans une page, comment récupérer directement leurs informations ?
Le titre de ce sujet est intentionnellement général, car la méthode devrait fonctionner pour n'importe quel élément HTML.
3 Réponses :
HTML cliquez
JS
function myFunction(event) { event.preventDefault(); // Do your stuff with event.target which is <a> }
p>
Qu'est-ce qui ne fonctionne pas, vous pourriez utiliser event.target.href
?
event.prevendDefault (); ne fonctionne pas: `` `` function myFunction (element) {// $ (element) .click (function () {return false;}); element.preventDefault (); console.log (element.attributes ["href"]); } `` `
Cela n'arrête pas le lien pour ouvrir une page.
Avez-vous passé arg onclick = "myFunction (event)"
?
Vous pouvez essayer stackoverflow.com/questions/7056669/...
@SonjoySamadder Il veut un exemple utilisant un lien et veut servir les deux objectifs. empêcher les actions de clic et l'accès aux attributs. J'ai donné la réponse qui a marqué. Pourriez-vous s'il vous plaît voter la réponse
Erratum: J'utilisais "myFunction (element)" et "element.preventDefault ();". Je ne savais pas que nous devions utiliser des mots clés spécifiques tels que "événement" pour que cela fonctionne. Alors, je retire mon dernier commentaire.
Bon alors d'abord pourquoi pas event.preventDefault ()
// Faites votre travail
window.location.href = event.target.href; // Pour accéder au lien.
oui vous avez raison avec le sélecteur id ou css que vous pourriez faire. Mais il existe un autre moyen.
Il suffit de passer this en appelant la fonction et vous pourrez accéder à tous les attributs de l'élément comme ci-dessous:
function myFunction(element, event) { event.preventDefault(); // event object can be passed element.style.backgroundColor = "red" // attribute can be accessed console.log(element.attributes["data-name"]) }
alors vous pouvez accéder à toutes les informations comme ci-dessous:
<a href="google.com" style="background-color: yellow" onclick="myFunction(this, event)"> click me !!!! <a>
Le problème est que je ne peux pas tester votre code étant donné que preventDefault () ne fonctionne pas pour arrêter le lien pour ouvrir une nouvelle page.
vous avez dit pour n'importe quel élément. alors j'ai fait une démo avec l'élément DIV. Cela fonctionne très bien. Voulez-vous avec l'élément de lien seulement ???
Ouais, je ne suis pas censé savoir que soudainement, ma technique pour éviter le lien de redirection échouera, et que tout le code proposé par tout le monde échouera aussi. Je pensais pouvoir poser une question générale, mais il semble que je doive faire un nouveau sujet sur LINKS uniquement, en raison de la quantité de merde que JS m'apporte.
Bien. J'ai mis à jour ma réponse à l'aide de la balise de lien. Veuillez vérifier
Cela ne fonctionne pas car vous n'empêchez le comportement normal qu'une fois que vous avez cliqué sur l'élément. Quelle est votre vraie question, parce que ce n'est pas clair? Demandez-vous comment remplacer la fonction
myFunction
, ou demandez-vous comment se lier à un élément DOM spécifique qui n'a pas de classe ou d'ID?@BenM Ma question est très claire: je veux récupérer les informations d'un élément qui n'a pas d'identifiant ou de classe. Le fait que je veuille empêcher le comportement normal du lien n'est qu'un problème secondaire (ce qui est compréhensible, étant donné que cliquer sur un lien atteindra la cible, et je ne veux pas de cela).
devez-vous utiliser des attributs en ligne onclick? sa mauvaise pratique.
Oui je le dois, en raison de la logique du script que je veux concevoir (il est censé éditer des liens dans une page, afin d'ouvrir une popup avec le href). Mais de toute façon, quelqu'un m'a donné la solution.