我花了好几个小时试图解决此问题并查看其他类似的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 %>
答案 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();
});
$("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;
答案 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();
}