在哪里放置 jquery 个文件,包括事件处理程序
Where to put jquery files including event handlers
我知道这可能很愚蠢,但一如既往地感谢您的帮助:
我有 pre.js 个包含一个事件处理程序的文件
$('#soon_tasks_header').click(function(){
$('#soon_tasks_content').slideToggle() ;
})
application.js
需要
//= require pre
点击#soon_tasks_header 不会切换滑动,
但是,将代码放在我浏览器的 jQuery 控制台中工作正常。
注:
当我在我的 pre.js 文件中测试它时,它工作正常:
$(document).ready(function(){
alert('aaaa') })
我想我搞砸了一些基本的东西,即导入 jquery 文件,何时何地。
我放在里面
$(document).ready(function(){
$('#soon_tasks_header').click(function(){
$('#soon_tasks_content').slideToggle() ;
});
})
而且效果很好。
谢谢
这里要了解的重要一点是,在 DOM 元素出现在页面中之前,无法安装 DOM 元素上的事件处理程序。如果您尝试在页面加载器解析页面的那部分之前过早地安装它们,那么 jQuery 将不会在页面中找到任何匹配的元素,并且不会附加任何事件处理程序。
有多种方法可以确保在 DOM 元素出现在页面中之前不会实际执行安装事件处理程序的代码。
将 <script>
标记实际放置在 <body>
部分的末尾。这将确保所有 DOM 元素在脚本运行之前都已被解析。
将您的代码包装在 $(document).ready()
中,这将告诉 jQuery 等待调用您的代码,直到页面已被解析并且所有 DOM 元素都在页。
如果您无法控制 <script>
标签的位置,或者由于您的环境而很难将所有 <script>
标签放在 <body>
标签的末尾,那么你可以像这样使用 $(document).ready()
:
$(document).ready(function() {
$('#soon_tasks_header').click(function(){
$('#soon_tasks_content').slideToggle() ;
})
});
而且,只要 jQuery 已经首先加载,无论您在何处包含脚本标签,这都将起作用。
我知道这可能很愚蠢,但一如既往地感谢您的帮助:
我有 pre.js 个包含一个事件处理程序的文件
$('#soon_tasks_header').click(function(){
$('#soon_tasks_content').slideToggle() ;
})
application.js
需要 //= require pre
点击#soon_tasks_header 不会切换滑动, 但是,将代码放在我浏览器的 jQuery 控制台中工作正常。
注:
当我在我的 pre.js 文件中测试它时,它工作正常:
$(document).ready(function(){
alert('aaaa') })
我想我搞砸了一些基本的东西,即导入 jquery 文件,何时何地。
我放在里面
$(document).ready(function(){
$('#soon_tasks_header').click(function(){
$('#soon_tasks_content').slideToggle() ;
});
})
而且效果很好。 谢谢
这里要了解的重要一点是,在 DOM 元素出现在页面中之前,无法安装 DOM 元素上的事件处理程序。如果您尝试在页面加载器解析页面的那部分之前过早地安装它们,那么 jQuery 将不会在页面中找到任何匹配的元素,并且不会附加任何事件处理程序。
有多种方法可以确保在 DOM 元素出现在页面中之前不会实际执行安装事件处理程序的代码。
将
<script>
标记实际放置在<body>
部分的末尾。这将确保所有 DOM 元素在脚本运行之前都已被解析。将您的代码包装在
$(document).ready()
中,这将告诉 jQuery 等待调用您的代码,直到页面已被解析并且所有 DOM 元素都在页。
如果您无法控制 <script>
标签的位置,或者由于您的环境而很难将所有 <script>
标签放在 <body>
标签的末尾,那么你可以像这样使用 $(document).ready()
:
$(document).ready(function() {
$('#soon_tasks_header').click(function(){
$('#soon_tasks_content').slideToggle() ;
})
});
而且,只要 jQuery 已经首先加载,无论您在何处包含脚本标签,这都将起作用。