我有以下2个链接,这些链接是在ruby rails中形成的。每个链接:
<%= link_to "Reply", '#', class: 'reply-link', id: "reply-#{sender}" %>
<%= link_to "Resolved", '#', class: 'complete-link', id: "resolved-#{sender}" %>
我希望能够做到这样的事情,但我不知道如何在ajax帖子中提取rails记录ID(#{sender})。
$('.reply-link').click(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: '/messages/complete?sender='+$(this).attr("id")
});
});
上面的$(this).attr("id")
显然会返回reply-1
而不是1
答案 0 :(得分:2)
如果符合您的需要,您也可以使用data- *属性:
<%= link_to "Reply", '#', class: 'reply-link', data: { id: sender } %>
<%= link_to "Resolved", '#', class: 'complete-link', data: { id: sender } %>
然后您可以使用
$('.reply-link').data('id')
$('.resolved-link').data('id')
更干净,而不是在id属性中放入“reply-”和“resolved-”字符串,然后不得不进行字符串操作。
答案 1 :(得分:0)
您获得了正确的ID,如果您需要数字,则需要从ID中删除字符串reply-
。
$(this).attr("id").replace("reply-", "");
答案 2 :(得分:0)
您可以使用split
方法获取id
,如此:
$(this).attr("id").split("-")[1];
但更清晰,更好的解决方案是选择data
属性。在这种情况下,您可以像这样存储id
:
<%= link_to "Reply", '#', class: 'reply-link', data-id: sender %>
您可以使用data
方法检索此内容:
var id = $(this).data("id");
这样做的另一个好处是data
属性被JQuery
缓存。
答案 3 :(得分:0)
$(this).attr("id")
返回元素的正确ID "reply-1"
。但是您需要该id属性中的数字,请执行以下操作: -
$(this).attr("id").split("-")[1]
答案 4 :(得分:-1)
试试这个,
$('.reply-link').click(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: '/messages/complete?sender='+$(this).attr("id").split("-")[1]
});
});