微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery函数仅在.ready内部起作用

如何解决jQuery函数仅在.ready内部起作用

| 我仍然对jQuery还是陌生的,我想知道在.ready()内部调用的jQuery函数如何正常工作而在外部却不能正常工作? 例如,这将起作用:
$(document).ready(function() {
    $(\'#field1\').click(function() {
        $(\'#result\').load(\'/random_post #post\');
    });
});
但这不会:
$(\'#field1\').click(function() {
    $(\'#result\').load(\'/random_post #post\');
});
    

解决方法

        它的工作方式和作用方式取决于HTML中脚本和元素的排列顺序,还可能会受到控件外部参数的影响(例如,浏览器的编程行为)。 我猜想这个脚本会在您的页面中出现在添加了点击处理程序的带有ѭ2的元素之前;这导致脚本运行,并且在文档树中尚未找到此类元素(尚未)。在脚本运行后添加该元素,这就是为什么jQuery在整个文档加载后都发现它很好的原因。 如果将脚本移到页面的最后,它应该可以工作(尽管正确的解决方案是使用文档就绪事件,如第一个代码片段中所示)。     ,        在完全解析文档并构造DOM之前,您无法访问DOM。这包括修改任何元素,例如
#field1
#result
。 由于
$(document).ready(..)
很长并且可能难以记住,因此您也可以使用缩写形式
$(onReadyFunction)
,即
$(function() {
    $(\'#field1\').click(function() {
        $(\'#result\').load(\'/random_post #post\');
    });
});
顺便说一下,jQuery在这里没有什么神奇之处:它只是在DOM树的解析和构造触发
DOMContentLoaded
(或等效)事件时注册要调用的函数。     ,        在创建dom树后,将执行ready函数。您在第二段代码中出错,因为尚未创建ID为filed1的dom树元素,即该页面尚未加载。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。