我有一个外部js文件,需要在单击某个元素时触发。此代码位于就绪函数内。当我在ready函数中有一个alert语句时,一切正常。但是当我删除警报时, 准备好的功能没有被调用。可能是这种奇怪行为的原因是什么?
alert()
$(".monthChanger span").click(function (event) {
event.stopPropagation();
$(".monthChanger span ul").show();
});
没有此警报调用,上述代码不会被触发。此代码位于ready()函数
中答案 0 :(得分:0)
我认为问题是在加载“.monthChanger span”之前加载并执行了外部文件。 jQuery中的触发器仅适用于加载触发器时已存在的元素(至少是您正在使用的那些触发器,还有其他jQuery函数(.live)在选择器的代码之后不需要加载准备好了,为了工作)。
要解决这个问题,你可以依赖“.live”jQuery函数,为外部文件尝试$(document).ready()(不过我不确定是否可以使用)或者只是确保javascript文件的加载时间晚于它所依赖的元素(只需在下面放置所需的元素。