web-dev-qa-db-fra.com

Étiquette jQuery 'for' sélecteur d'attributs

J'utilise Remy Sharp's plugin d'étiquetage pour jQuery et je voudrais exclure une étiquette avec l'attribut for et la valeur nature.

Voici un exemple de fonctionnement du code:

$(document).ready(function() {
    $('form.default label').labelOver('over');
});

et ce que j'essaie de faire:

$(document).ready(function() {
    $('form.default label').not($('label').attr('for','nature')).labelOver('over');
});

Quelqu'un peut-il voir où je me trompe? J'ai l'impression d'être assez proche de ce que je dois faire.

18
Jimmy Joyce

attr n'est pas un sélecteur, c'est une fonction qui obtient la valeur d'attribut avec le nom d'attribut comme premier argument, ou la définit avec une nouvelle valeur si l'une est passée comme argument 2ng.

En outre, vous avez exclu les étiquettes après les avoir sélectionnées avec votre appel not, car le sélecteur label correspond à toutes les étiquettes, et attr comme je l'ai dit ne filtre pas cela.

Pour sélectionner en fonction de l'attribut, utilisez ceci:

$(document).ready(function() {
    $("form.default label[for!='nature']").labelOver('over');
});

Comme vous l'avez peut-être deviné, le [attribute='value'] est le sélecteur d'un attribut "égal" à une valeur, et [attribute!='value'] en est la version "différente".

Pour référence, voir:
http://api.jquery.com/attribute-not-equal-selector/

Pour référence sur tous les sélecteurs:
http://api.jquery.com/category/selectors/

Ceci est également référencé sur mon site de newsletter JavaScript et Web Dev .

26
Meligy

.attr('for', 'nature') définit la valeur de l'attribut for sur nature

Pour filtrer par attributs, utilisez [attribute="value"]:

$('form.default label').not('[for="nature"]').labelOver('over')
2
mak

code de travail: http://jsfiddle.net/3nQbr/1/

$('label').not('[for="nature"]').labelOver('over');
2
Jacek Kaniuk