jQuery + Rails:如何获取单击按钮用户的id

时间:2017-10-16 07:34:57

标签: javascript jquery ruby-on-rails ruby

我花了好几个小时试图解决此问题并查看其他类似的StackOverflow问题(1) (2),但似乎没有人能解答我的问题。

我无法理解这个错误:ReferenceError: id is not defined。警报也没有显示出来。

  $("button.btn-tag-cat").click(function(e){
    e.preventDefault();
    var id = $(this).prop('id');
    alert(id);
    id.find('span').show();
    }, function(){
    id.find('span').hide();
  });

我尝试了以下方法来使用id变量但没有工作。

$(id).find('span').show();
$("#" + id).find('span').show();

然而,当我删除警报下方的代码块时,会弹出警告,其中包含属于该按钮的正确ID。

  $("button.btn-tag-cat").click(function(e){
    e.preventDefault();
    var id = $(this).prop('id');
    alert(id);
  });

查看部分: Button id引用ruby局部变量 id="<%= name %>"

  <% q.categories_name_in.each do |name|  %>
    <button type="button" class="btn btn-outline-primary btn-lg btn-tag-cat" id="<%= name %>"><%= name %><span class='glyphicon glyphicon-remove'></span></button>
  <% end %>

2 个答案:

答案 0 :(得分:2)

正如您所指出的,错误是在点击侦听器中链接功能。

为了获取id属性,您可以使用jQuery attr函数,如:

$("button.btn-tag-cat").click(function(e) {
  e.preventDefault();
  var id = $(this).attr('id');
  alert(id);
  $('#' + id).find('span').show();
});

&#13;
&#13;
$("button.btn-tag-cat").click(function(e) {
  e.preventDefault();
  var id = $(this).attr('id');
  alert(id);
  $('#' + id).find('span').show();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button class="btn-tag-cat" id="hallo">Press</button>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

在这里,我会在你的代码中美化它以查看你的错误:

$("button.btn-tag-cat").click(
  function(e) {
    e.preventDefault();
    var id = $(this).prop('id');
    alert(id);
    id.find('span').show();
  },

  function() {
    id.find('span').hide();
  }
);

注意第二个功能有

  function() {
    id.find('span').hide(); // right here
  }

但id尚未定义

  function() {
    var id = $(this).prop('id'); // this first
    id.find('span').hide();
  }