具有相同id的DOM元素和jQuery

3

你好,我在我的应用程序中有多个具有相同结构的元素。第二个div元素的id根据数据库中唯一的评论id而变化。有id为“vote_up”和“vote_down”的元素。这会针对每个评论重复出现。由于有多个评论,发生的情况是我想执行一个Ajax请求。这个结构的第一个函数使用ajax正常工作,但其余部分使用http请求。顺便说一下,我正在开发一个Rails应用程序,并使用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>      

你能帮我解决这个问题吗?谢谢。


11
在同一文档中两次使用相同的ID是无效的HTML。请修复您的HTML。 - Matti Virkkunen
3
为了具有相同行为的元素,您可以使用相同的“类”而不是相同的“ID”。如先前提到的,“ID”应该是唯一的:] - Ju Nogueira
2个回答

4

在之前所说的基础上,你应该这样实现:

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

然后,您可以使用以下方式选择所有评论:
$('.comment')

或者一个单独的评论:

$('#comment_10")

4

如Matti所述,根据W3C标准,ID必须是唯一的。一个不错的解决方法是在评论的数据库ID后缀添加,例如<input id="Comment_39127438"...


我现在才评论这个有点晚了。我同意W3C标准要求每个元素都有唯一的id。但是可能会出现两个或更多元素具有相同的id,而且它并不会破坏页面。 - Sid
强烈不建议使用具有多个ID的情况。如果您在应用程序中构建了使用选择器API的视图,就可以理解为什么了。 - Ain Tohvri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接