link_to jquery函数

时间:2012-06-27 04:52:08

标签: jquery ruby-on-rails

我对编码很新,学会用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 .

提前感谢您的回复。

2 个答案:

答案 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/