我对编码很新,学会用rails编写代码,感觉我错过了一些非常基本的jquery。
在我的用户个人资料页面上,有一个链接供用户更改其头像图片:
<div id="show_avatars_choice">
<%= link_to "Change Avatar", "#", remote: true %>
</div>
然后,在/assets/javascripts/users.js中,我有:
$("#show_avatars_choice").on("click", function(event){
event.preventDefault();
alert("you clicked me");
})
最终警报将被替换为允许显示选择的替代头像图片的一些代码,但在此阶段,即使单击链接时也不会弹出简单警报。我做错了什么?
application.js文件包含以下行:
//= require jquery
//= require jquery_ujs
//= require_tree .
提前感谢您的回复。
答案 0 :(得分:2)
Tracy Fu说的是正确的,元素应该在绑定之前的页面上。她的回答是正确的,但是如果你这样做的话会更短:
$(document).on("click", "#show_avatars_choice", function(event){
event.preventDefault();
alert("you clicked me");
})
查看实际操作:http://jsfiddle.net/sXVzU/
也对Tracy Fu的小提琴进行了一些修改:http://jsfiddle.net/4qRjt/
答案 1 :(得分:0)
问题可能是您在DOM中元素存在之前绑定事件吗?据我所知,jQuery的on
仍然要求在初始绑定之前元素在页面上。
你可以试试这个:
// This will run when the DOM is loaded
$(function() {
$("#show_avatars_choice").on("click", function(event){
event.preventDefault();
alert("you clicked me");
})
});
这是一个小提示,显示在DOM加载之前和之后尝试绑定: http://jsfiddle.net/tracyfu/FX5aC/