我正在构建一个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'); });
为什么我的更改功能不起作用?
答案 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将在加载元素之前执行,并且它将无法正确执行。