JS初始化正确,但仍然不能运行,除非我把它放入控制台
JS initiating correctly, but still won't run unless I put it into the console
在我输出我的标记(就在</body>
:
$(document).ready(function() {
.....
focusLeaving: function(){
e('#running');
$('.levelThree').on('mouseleave',function () {
e('remove');
MM.internalMenu.levelFive.close(function(){});
MM.internalMenu.levelThree.close($(this));
$(this).parent().removeClass('active');
});
}
//This outputs as expect: '#running'
....
});
然而,留下一个.levelThree
什么也不会发生。如果我在控制台内运行上述代码,甚至通过控制台MM.internalMenu.levelThree.focusLeaving();
运行函数本身,该函数就会相应地工作。
这让我很困惑,我知道它应该工作。我甚至知道它在运行,所以为什么它不能工作....
使用on
函数意味着将事件绑定到回调处理程序。$('.levelThree').on('mouseleave',function () { .... }
相当于说"从现在开始,当一个mouseleave事件在物品上被触发时,执行这个函数"。
函数本身不会在那个时间点执行,它只会在mouseleave事件发生时设置执行。
进一步解释:
<a id="my_link" href="#"> click me! </a>
当你点击这个,没有发生什么。假设您希望在单击它时显示You clicked me!
。您需要使用on
函数来设置它。
$("#my_link").on('click', function {
alert("You clicked me!");
});
请注意,您仍然没有看到带有消息的警告框。您只需要设置在单击时显示的警告框。如果您点击链接,只有在您才会看到警告框。
需要注意的是,设置事件处理程序并不触发事件本身。但是,如果在控制台中运行该代码,它将直接执行。这就解释了为什么你的代码在控制台中运行时可以正常工作。
我假设focusLeaving
是当鼠标离开项目时触发的事件?在这种情况下,修复这个问题的最简单方法是删除on
函数,因为已经有一个事件触发并执行。您设置了两次,这就是导致您面临的问题的原因。
您是否在$(document).ready(function() { ... }
中包装了脚本?在DOM准备好之后运行JS函数可能会使脚本再次工作,假设已经定义了MM
。
根据官方文件:
传递给.ready()的处理程序保证在DOM已经准备好了,所以这通常是附加所有其他属性的最佳位置事件处理程序和运行其他jQuery代码
- 在非我的页面上重新加载CSS
- ng中继器打印结果0;当我运行函数时
- 当我运行代码时,我得到以下结果 []对象对象] [对象对象],但应该给我一个有序数组
- 如何更新日期?当我运行应用程序时,它被卡住了
- 一些雄辩的Javascript代码不想为我运行
- 升级的 Excel 和现在的 Visual Studio 不允许我运行我的外接程序项目
- 在我的测试脚本中,我运行了 if 语句,但我从未运行过其他语句?我做错了什么
- 当我运行这个脚本时,NaN
- 当我运行返回()时"":""Javascript中的语法,只有当我将文件保存为PHP
- 我有两个绑定函数,当我运行它们时,它'It’很慢
- 为什么我运行For循环时它不起作用
- 可手持:Can'除了“;未定义的“;当我运行countRows方法时
- 为什么当我运行以下代码时没有出现多维数据集
- 当我运行代码时,为什么不显示数字、平方和立方体呢
- 为什么当我运行这个时有未定义
- 当我运行node app.js命令时,它会给我错误`ENOENT,.mime.types上没有这样的文件或目录
- 元滑块在我运行此代码的那一刻消失
- 为什么当我运行Jquery函数时会触发HTML5验证
- grunt contrib车把-输出与我运行车把npm任务时不同
- 在JavaScript中,我怎么知道我运行的是IPad1还是IPad2 ?