如何使用jquery检索对象id

时间:2014-02-13 07:39:34

标签: jquery ruby-on-rails ruby ajax

我有以下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

5 个答案:

答案 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]
 });
});