【发布时间】:2014-08-29 23:00:55
【问题描述】:
我正在制作一个hackernews 克隆,目前正在尝试实现支持线程和cmets 的功能。我通过在我正在使用的箭头 .png 文件的单击事件上附加一个 ajax 请求来执行此操作,以增加我数据库中的线程 upvote 列。
这显示了我正在迭代每个提交的索引页面。
<% @submissions.each do |submission| %><br>
<div id="upvote" class="submission_upvote/<%= submission.id %>">
<img src="up.png" />
</div>
<div class="submission">
<a href="/submissions/<%= submission.id %>">
<%= submission.id %>. <%= submission.title %> (<a href="<%= submission.url %>"><%= submission.url %></a>)
</a>
<p>
<span id="author_comments_row">by <%= submission.user.name %> <%= submission.created_at %></span>
</p>
</div>
<%end%>
我的 jquery 现在看起来像这样:
$('#upvote img').on('click', function(e){
var num = $('#upvote').attr('class');
var new_num = num.match(/[0-9]/);
但是,它只是识别#upvote img 的第一个实例。我的问题是:如何将 ajax 请求绑定到每个和每个“#upvote img”标签,以便我可以检索提交 ID?
【问题讨论】:
-
元素的id必须是唯一的,所以你需要使用
upvote作为一个类而不是一个id来分组所有相似的元素......然后使用$('upvote img'). -
我删除了ID并打电话给班级无济于事。它仍然返回第一次提交的 id。我认为这与我使用 .attr(); 的事实有关。有没有更好的使用方法?
-
是的,有...等一下,我会做一个快速的 jsfiddle。
-
尝试使用像
$(document).on('click', '.upvote img', function(){...})这样的事件委托