2010-06-03 9 views
3

Salut J'ai plusieurs éléments avec la même structure dans mon application. L'identifiant de l'élément div varie en fonction de l'identifiant du commentaire dans la base de données qui est unique. Il y a des éléments avec l'identifiant 'vote_up' et 'vote_down'. Cela se répète pour chaque commentaire. Ce qui se passe est que, comme je l'ai mentionné, il y a plusieurs commentaires. Je veux effectuer une requête Ajax. Le premier de cette structure fonctionne correctement en utilisant ajax, mais le reste fait une requête http. BTW Je développe une application de rails et j'utilise jQuery.Éléments DOM avec le même id et jQuery

<div id="post_comment"> 
john<i> says </i> Comment<br/> 

<div id="comment_10_div"> 
**<form action="/comments/vote_up" id="vote_up" method="post">** 
     <div style="margin:0;padding:0;display:inline"> 
       <input name="authenticity_token" type="hidden" 
       value="w873BgYHLxQmadUalzMRUC+1ql4AtP3U7f78dT8x9ho=" /> 
     </div> 
    <input id="Comment_place_id" name="Comment[post_id]" type="hidden" value="3" /> 
    <input id="Comment_id" name="Comment[id]" type="hidden" value="10" /> 
    <input id="Comment_user_id" name="Comment[user_id]" type="hidden" value="2" /> 
    <input name="commit" type="submit" value="Vote up" /> 
</form> 

<label id="comment_10">10</label> 

**<form action="/comments/vote_down" id="vote_down" method="post">** 
     <div style="margin:0;padding:0;display:inline"> 
      <input name="authenticity_token" type="hidden" 
      value="w873BgYHLxQmadUalzMRUC+1ql4AtP3U7f78dT8x9ho=" /> 
     </div> 
    <input id="Comment_place_id" name="Comment[place_id]" type="hidden" value="3" /> 

    <input id="Comment_id" name="Comment[id]" type="hidden" value="10" /> 
    <input id="Comment_user_id" name="Comment[user_id]" type="hidden" value="2" /> 
    <input name="commit" type="submit" value="Vote Down" /> 
</form> 
</div>  

Pouvez-vous s'il vous plaît me aider à résoudre ce Merci

+11

L'utilisation du même ID deux fois dans le même document n'est pas un code HTML valide. Corrigez votre HTML. –

+0

Merci Matti :) Correction – felix

+3

Vous pourriez utiliser la même 'class' pour les éléments ayant le même comportement au lieu de la même' ID'. Comme déjà mentionné, 'ID's sont censés être uniques:] –

Répondre

4

Oui, comme Matti mentionné ci-dessus, par les normes du W3C ID doit être unique. Une solution de contournement intéressante consiste à postfixer l'ID db du commentaire, par ex. <input id="Comment_39127438"...

+0

Il est tard que je commente à ce sujet. Je suis d'accord que les normes du W3C exigent un identifiant unique pour chaque élément. Mais il peut arriver que l'ID soit identique pour deux ou plusieurs éléments, et de plus, il ne casse pas la page. – Sid

+0

Ces cas avec plusieurs ID sont fortement déconseillés. Vous pouvez dire pourquoi, si vous avez construit une vue dans votre application qui utilise l'API Selectors à n'importe quel niveau. –

4

expansion sur ce qui a déjà été dit, la façon dont vous devez mettre en œuvre c'est:

<div id="comment_10" class="comment"> 
</div> 

vous pouvez sélectionner tous les commentaires avec:

$('.comment') 

ou un seul commentaire avec:

$('#comment_10") 
Questions connexes