99 votes

Trouver tous les éléments avec une certaine valeur d'attribut dans jquery

J'ai besoin de trouver tous les éléments qui ont une valeur d'attribut spéciale.

Voici la div que je dois trouver (j'en ai beaucoup )

<div imageId='imageN'>...

J'ai simplement besoin de passer en boucle les divs qui ont imageId='imageN'

6 votes

Je recommande d'utiliser class="imageN" pour des raisons de validité du HTML. Soit ça, soit data-imageId="imageN" au nom de la validité du HTML5. Dans le premier cas, vous pourriez utiliser le sélecteur de classe.

0 votes

Andy, la raison derrière cela est que ces divs sont ajoutés dynamiquement à partir du code-behind et ont des ImageIds différents mais la même classe'.

3 votes

Vous pouvez avoir plusieurs classes class="image imageN" si cela peut aider.

181voto

sammy34 Points 707

Bien que cela ne réponde pas précisément à la question, j'ai atterri ici en cherchant un moyen d'obtenir la collection d'éléments (potentiellement différents noms de balises) qui ont simplement un nom d'attribut donné (sans filtrer par la valeur de l'attribut). J'ai trouvé que la méthode suivante fonctionnait bien pour moi :

$("*[attr-name]")

J'espère que cela aidera quelqu'un qui atterrirait sur cette page en cherchant la même chose que moi :).

Mise à jour : Il semble que l'astérisque n'est pas nécessaire, c'est-à-dire que sur la base de quelques tests de base, ce qui suit semble être équivalent à ce qui précède (merci à Matt de l'avoir signalé) :

$("[attr-name]")

0 votes

Parfait ! Juste ce que je cherchais.

0 votes

C'est tout à fait possible... je n'ai pas vérifié l'aspect performance (ce n'était pas un facteur important pour mon utilisation à l'époque).

3 votes

Y a-t-il une différence entre ça et $("[attr-name]") ? (c'est-à-dire pas de * )

163voto

ThiefMaster Points 135805
$('div[imageId="imageN"]').each(function() {
    // `this` is the div
});

Pour vérifier la seule existence de l'attribut, quelle que soit sa valeur, vous pouvez utiliser ce sélecteur à la place : $('div[imageId]')

4 votes

@ThiefMaster - Si la valeur de l'attribut n'est pas constante, (c'est-à-dire qu'elle varie) alors comment la trouver ?

0 votes

Quelques questions : 1- qu'en est-il des autres éléments ... 2- qu'en est-il des autres valeurs ... Je pourrais avoir l'attribut données alimentaires sur de nombreux éléments : div's, img's et td's, où chacun a une valeur différente.

0 votes

@ParthoGanguly Vous utilisez une variable de cette façon : $('div[imageId="' + variableName + '"]')

16voto

Val Points 7050

Il ne s'agit pas d'une balise ; ce que vous recherchez s'appelle un attribut html.

$('div[imageId="imageN"]').each(function(i,el){
  $(el).html('changes');
  //do what ever you wish to this object :) 
});

6voto

Krunal Points 96

Vous pouvez utiliser la valeur partielle d'un attribut pour détecter un élément DOM en utilisant le signe (^). Par exemple, vous avez des divs comme ceci :

<div id="abc_1"></div>
<div id="abc_2"></div>
<div id="xyz_3"></div>
<div id="xyz_4"></div>...

Vous pouvez utiliser le code :

var abc = $('div[id^=abc]')

Cela renverra un tableau DOM des divs dont l'id commence avec abc :

<div id="abc_1"></div>
<div id="abc_2"></div>

Voici la démo : http://jsfiddle.net/mCuWS/

6voto

LostSenSS Points 1

Utilisez la concaténation de chaînes de caractères. Essayez ceci :

$('div[imageId="'+imageN +'"]').each(function() {
    $(this);   
});

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