0

我有一个外部 js 文件,当单击某个元素时需要触发该文件。这段代码在 ready 函数中。当我在 ready 函数中有一条警告语句时,一切正常。但是当我删除警报时,没有调用 ready 函数。这种奇怪行为的原因可能是什么?

alert()
    $(".monthChanger span").click(function (event) {
            event.stopPropagation();
            $(".monthChanger span ul").show();
        });

如果没有这个警报调用,上面的代码不会被触发。这段代码在 ready() 函数中

4

1 回答 1

0

我认为问题是在加载“.monthChanger span”之前加载并执行了外部文件。jQuery 中的触发器仅适用于在加载触发器时已经存在的元素(至少是您正在使用的那些触发器,还有其他 jQuery 函数( .live )不需要在选择器的代码之后加载准备好了,为了工作)。

要解决这个问题,您可以依靠“.live” jQuery 函数,为外部文件尝试 $(document).ready() (不过,我不确定是否可行,或者只是确保 javascript 文件是加载晚于它所依赖的元素(只需将其放置在它需要的元素下方。

于 2012-07-23T09:17:42.993 回答