jQuery 的事件处理程序工作得很好但不应该因为它不在 ready() 函数中

Event handler for jQuery works great but shouldn't because it's not in ready() function

我犯了一个错误,将所有带有 class cancelAction 的链接的事件处理程序放在了文档加载时执行的函数之外,如下所示:

$(document).ready(function () { ... });

$(".cancelAction").on("click", function () { ... });

令我惊讶的是,它仍然有效!我很确定这是不应该的。我错了吗?

我已经三重检查注释掉处理程序会使功能无效。我一生都无法理解浏览器如何知道要考虑这个特定的处理程序,如果它没有附加到任何范围(因为它没有在 ready(...) 函数中执行。

好吧,如果您在加载文档元素后有此代码,那么它应该与 dom 元素加载后执行的代码一样。喜欢:

....
</body>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(".cancelAction").on("click", function () { ... });
</script>

此代码可以正常工作,因为在代码执行时会加载所有元素。