Je recommande d'utiliser class="imageN"pour le bien du HTML valide. Soit cela, soit data-imageId="imageN"pour un HTML5 valide. Avec le premier, vous pourrez utiliser le sélecteur de classe.
Andy E
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 '.
Pabuc
3
Vous pouvez avoir plusieurs classes class="image imageN"si cela vous aide.
Val
Pourquoi ne pas sélectionner sur le nom de la classe alors s'ils ont déjà la même classe?
Praxis Ashelin
Réponses:
143
$('div[imageId="imageN"]').each(function() {
// `this` is the div
});
Pour vérifier la seule existence de l'attribut, quelle que soit la valeur, vous pouvez utiliser ce sélecteur à la place: $('div[imageId]')
@ThiefMaster - Si la valeur de l'attribut n'est pas constante (c'est-à-dire qu'elle variera), comment la trouver?
Développeur
quelques questions: 1- qu'en est-il des autres éléments ... 2- qu'en est-il des autres valeurs ... Je pourrais avoir l'attribut data-food sur de nombreux éléments: div, img et td, où chacun a une valeur différente.
dsdsdsdsd
@ParthoGanguly Vous utilisez une variable de cette façon: $ ('div [imageId = "' + variableName + '"]')
Kama
1
Cette solution ne répond pas vraiment au titre de cette page. Vous recherchez des éléments qui sont des divs. Une solution appropriée est une solution indépendante de l'élément réel.
AndroidDev
164
Bien que cela ne réponde pas précisément à la question, je suis arrivé ici lors de la recherche d'un moyen d'obtenir la collection d'éléments (noms de balises potentiellement différents) qui avaient simplement un nom d'attribut donné (sans filtrage par valeur d'attribut). J'ai trouvé que ce qui suit fonctionnait bien pour moi:
$("*[attr-name]")
J'espère que cela aidera quelqu'un qui arrive à atterrir sur cette page à la recherche de la même chose que moi :).
Mise à jour: Il semble que l'astérisque n'est pas obligatoire, c'est-à-dire que sur la base de certains tests de base, ce qui suit semble être équivalent à ce qui précède (merci à Matt pour l'avoir signalé):
class="imageN"
pour le bien du HTML valide. Soit cela, soitdata-imageId="imageN"
pour un HTML5 valide. Avec le premier, vous pourrez utiliser le sélecteur de classe.class="image imageN"
si cela vous aide.Réponses:
$('div[imageId="imageN"]').each(function() { // `this` is the div });
Pour vérifier la seule existence de l'attribut, quelle que soit la valeur, vous pouvez utiliser ce sélecteur à la place:
$('div[imageId]')
la source
Bien que cela ne réponde pas précisément à la question, je suis arrivé ici lors de la recherche d'un moyen d'obtenir la collection d'éléments (noms de balises potentiellement différents) qui avaient simplement un nom d'attribut donné (sans filtrage par valeur d'attribut). J'ai trouvé que ce qui suit fonctionnait bien pour moi:
$("*[attr-name]")
J'espère que cela aidera quelqu'un qui arrive à atterrir sur cette page à la recherche de la même chose que moi :).
Mise à jour: Il semble que l'astérisque n'est pas obligatoire, c'est-à-dire que sur la base de certains tests de base, ce qui suit semble être équivalent à ce qui précède (merci à Matt pour l'avoir signalé):
$("[attr-name]")
la source
$("[attr-name]")
? (ie non*
)$("[data-toggle='modal']")
Cela ne s'appelle pas 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 :) });
la source
Vous pouvez utiliser la valeur partielle d'un attribut pour détecter un élément DOM à l'aide du signe (^). Par exemple, vous avez des div 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 de divs dont l'ID commence par
abc
:<div id="abc_1"></div> <div id="abc_2"></div>
Voici la démo: http://jsfiddle.net/mCuWS/
la source
Utilisez la concaténation de chaînes. Essaye ça:
$('div[imageId="'+imageN +'"]').each(function() { $(this); });
la source