131 votes

jQuery : Ajout de deux attributs via la méthode .attr() ;.

EDIT :

J'ai appris qu'utiliser une autre valeur que _blank ne fonctionne pas sur les navigateurs mobiles pour ouvrir de nouvelles fenêtres/onglets.

Par exemple, si vous devez ouvrir une nouvelle fenêtre/un nouvel onglet :

  • Cela fonctionne sur tous les navigateurs, même les navigateurs mobiles : target="_blank" .

  • Cela ne fonctionne pas sur les navigateurs mobiles, mais il fait le travail sur les navigateurs de bureau : target="new" .

--

Bien que je l'aie fait fonctionner, je ne suis pas sûr qu'il y ait une meilleure façon de faire, ou si la façon dont je l'ai fait est la bonne/seule façon.

En gros, ce que je fais, c'est remplacer toutes les target="_new" o target="_blank" les valeurs d'attributs à target="nw" De cette façon, une seule nouvelle fenêtre est ouverte et toutes les autres fenêtres s'ouvrent dans celle-ci, afin de ne pas submerger l'utilisateur avec de multiples fenêtres.

J'ajoute également un " Ouvre une nouvelle fenêtre " title="" attribut.

La solution que j'ai créée est donc celle-ci :

$("a[target='_blank'], a[target='_new']").attr('target','nw').attr('title','Opens in a new window');

Remarquez les deux .attr(); méthodes.

Est-ce la bonne façon d'ajouter deux attributs à un élément ?

J'ai essayé .attr('target','nw','title','Opens in a new window') mais ça n'a pas marché.

La raison de ma question est le principe DYR (Don't Repeat Yourself), donc si je peux améliorer le code que j'ai, tant mieux, sinon, il est ce qu'il est.

Merci.

0voto

wonbin Points 1
Multiple Attribute

var tag = "tag name";
createNode(tag, target, attribute);

createNode: function(tag, target, attribute){
    var tag = jQuery("<" + tag + ">");
    jQuery.each(attribute, function(i,v){
        tag.attr(v);
    });
    target.append(tag);
    tag.appendTo(target);
}
var attribute = [
    {"data-level": "3"},
];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X