web-dev-qa-db-fra.com

Comment sélectionner tous les éléments avec un identifiant particulier dans jQuery?

J'essaie de tout sélectionner <div>s avec le même identifiant dans jQuery. Comment fait-on ça?

J'ai essayé ça et ça n'a pas marché

jQuery('#xx').each(function(ind,obj){
      //do stuff;
});
68
mark

J'utiliserais des identifiants différents mais attribuerais à chaque DIV la même classe.

<div id="c-1" class="countdown"></div>
<div id="c-2" class="countdown"></div>

Cela présente également l’avantage supplémentaire de pouvoir reconstruire les ID basés sur le retour de jQuery ('. Countdown').


Ok, qu'en est-il d'ajouter plusieurs classes à chaque compte à rebours. C'EST À DIRE:

<div class="countdown c-1"></div>
<div class="countdown c-2"></div>
<div class="countdown c-1"></div>

De cette façon, vous obtenez le meilleur des deux mondes. Il permet même de répéter 'IDS'

40
Ballsacian1

Bien qu'il existe d'autres réponses correctes ici (telles que l'utilisation de classes), d'un point de vue académique, il est bien sûr possible d'avoir plusieurs divs avec le même identifiant, et il est possible de les sélectionner avec jQuery.

Quand vous utilisez

jQuery("#elemid") 

il sélectionne uniquement le premier élément avec l'ID donné.

Toutefois, lorsque vous sélectionnez par attribut (par exemple, id dans votre cas), tous les éléments correspondants sont renvoyés, comme suit:

jQuery("[id=elemid]") 

Ceci fonctionne bien sûr pour la sélection sur n'importe quel attribut, et vous pouvez affiner votre sélection en spécifiant la balise en question (par exemple, div dans votre cas).

jQuery("div[id=elemid]") 
380
mydoghasworms

Votre document ne doit pas contenir deux div avec le même identifiant. Ceci est HTML invalide , et par conséquent, l'API DOM sous-jacente ne le prend pas en charge.

De la norme HTML :

id = name [CS] Cet attribut attribue un nom à un élément. Ce nom doit être unique dans un document.

Vous pouvez soit assigner différents identifiants à chaque div et les sélectionner tous les deux en utilisant $('#id1, #id2). Ou affectez la même classe aux deux éléments (.cls Par exemple) et utilisez $('.cls') pour les sélectionner tous les deux.

36
Ayman Hourieh

$("div[id^=" + controlid + "]") retournera tous les contrôles avec le même nom mais vous devez vous assurer que le texte ne doit apparaître dans aucun des contrôles.

4
Niranjan Kumar

Pouvez-vous affecter une classe CSS unique à chaque minuterie? De cette façon, vous pouvez utiliser le sélecteur de la classe CSS, ce qui fonctionnerait bien avec plusieurs éléments div.

2
Paul Morie

Essayez ceci pour sélectionner div par premier identifiant

$('div[id^="c-"]')
2
atabak

Vous pouvez également essayer de placer les deux div en deux div avec des identifiants uniques. Puis sélectionnez le div par $("#div1","#wraper1") et $("#div1","#wraper2")

Voici:

<div id="wraper1">
<div id="div1">
</div>
<div id="wraper2">
<div id="div1">
</div>
1
omer