rails jquery change event not working

时间:2012-08-14 09:54:13

标签: ruby-on-rails ruby-on-rails-3

我正在构建一个rails应用程序,我想在用户选择元素上的选项(不引人注意)时简单地激活代码。我已经读过,最支持的方法是将元素直接附加到change事件:

$('#country_selection').change(function() { alert('it works'); });

然而,对我来说,这不起作用。如果我把它放在控制台中,它就可以了。但是,将它放在我视图的js文件中,它不起作用。我知道我的js文件正在加载,因为插入一个简单的alert('in the js file');就好了。另一个奇怪的部分是使用live方法:

$('#country_selection').live('change', function() { alert('hello'); });

但是,我不想这样做b / c它不支持。我试过的另一个不起作用的选项是'委托'方法:

$('#country_selection').delegate('change', function() { alert('hello'); });

为什么我的更改功能不起作用?

1 个答案:

答案 0 :(得分:1)

如果您有像

这样的选择元素
<select id="my-select-box">
  <option value="1">First Value</option>
  <option value="2">Second Value</option>
</select>

然后以下Jquery代码应该可以工作

$('#my-select-box').change(function() {
  alert("hey, i got changed");
 });

在JQuery将代码绑定到选择器之前,必须加载DOM。为此,请确保您的代码在匿名函数中如下:

jQuery(function(){

  $('#my-select-box').change(function() {
    alert("hey, i got changed");
   });

});

这确保在JQuery执行并尝试绑定之前加载DOM。否则,JavaScript将在加载元素之前执行,并且它将无法正确执行。