出于某种原因,以下代码将起作用:
以下代码不起作用:
<script type='text/javascript'>
$('#login_password').click(function() {
alert('Handler for .click() called.');
});
</script>
但是当我没有像这样指定脚本类型时它会这样做:
<script>
...
</script>
为什么我需要将未指定的脚本类型留给元素上的事件调用?
更奇怪的是,以下内容将起作用:
<script type='text/javascript'>
$(document).ready(function(){
$("#login_username").focus();
});
</script>
我在Rails 3.0.9上使用JQuery 1.6.1。 gem jquery-rails 1.0.12已安装并捆绑。
在我的application.html.erb中,我打电话给:
<%= javascript_include_tag 'application.js', 'jquery.min.js', 'jquery.rails.js' %>
其中jquery.rails.js是不显眼的脚本编写适配器https://github.com/rails/jquery-ujs
提前致谢!
答案 0 :(得分:1)
尝试用$(document).ready
包装你的第一个例子<script type='text/javascript'>
$(document).ready(function(){
$('#login_password').click(function() {
alert('Handler for .click() called.');
});
});
</script>
答案 1 :(得分:1)
见凯文的评论,他是对的。在没有指定type属性的情况下工作的事实只是计算运气或某些特定于浏览器的侥幸。
答案 2 :(得分:0)
听起来你在DOM准备好之前尝试在DOM上执行脚本,这就解释了为什么第三个代码片段工作正常。
如果你的脚本在你正在使用的元素之前加载(例如包括<head>
标签中的脚本),请务必将它们包装起来:
$(document).ready(function() {
// manipulate DOM here
});
// or
jQuery(function($) {
// manipulate DOM here
});