我知道这可能是愚蠢的,但一如既往的帮助是值得赞赏的:
我有包含一个事件处理程序的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文件的地方和时间。
答案 0 :(得分:0)
我把它放在里面
$(document).ready(function(){
$('#soon_tasks_header').click(function(){
$('#soon_tasks_content').slideToggle() ;
});
})
它工作正常。 感谢。
答案 1 :(得分:0)
这里要理解的重要一点是,在页面中存在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,无论你在哪里包含脚本标记,这都会有效。