jQuery:我可以使$(document).ready(function(){}之外的函数可用吗?

jQuery:我可以使$(document).ready(function(){}之外的函数可用吗?,jquery,Jquery,我有以下代码: $(document).ready(function() { $("#popupClose").click(function(){ disablePopup(); }); $(document).keypress(function(e){ if(e.keyCode==27) { disablePopup();

我有以下代码:

     $(document).ready(function() {
       $("#popupClose").click(function(){  
            disablePopup();  
       });

       $(document).keypress(function(e){  
            if(e.keyCode==27) {  
                disablePopup();   
            }  
        });
}); 
现在(最后)可以在文档完成之前加载弹出窗口(需要弹出窗口来控制文件中的PHP流)。但是,由于这些函数仅在document.ready中创建,因此当脚本调用弹出窗口时,我的弹出窗口控件还不可用


感谢您的帮助!

请尝试在
$(文档)之外声明您的函数。ready(function(){…})
,就在

<script> </script>

您可能需要尝试jQuery的document on函数


尝试使用
.apply
.call
javascript方法..

使用“#popupClose”作为选择器,因为它总是假定您谈论的是当前文档中的ID,而不是父文档。 除此之外- jQuery是从什么上下文加载的? IFrame还是父窗口? 这会有很大的不同。 检查是否在加载DOM后添加了#popupClose,需要将元素重新绑定到jQuery正在使用的DOM。
这可能是您的问题。

在外部创建函数。没有理由将它们放在文档就绪回调中。现在尝试一下,但仍然不起作用…+1用于
on()
而不是
live()
很多人仍在使用。@Borniet:当绑定到动态加载的对象时,需要绑定到最近的静态对象以获得最佳性能,因此,如果您有一个div,例如,将弹出窗口加载到其中,则绑定到它比绑定到文档更好,即:
$(“#myStaticElement”)。on('click',“#popupClose”
非常正确,我只是不确定他现在的文档结构是什么样的。将“document”替换为包含“popupclose”的DIV的ID。但是不,不起作用。Jquery和包含所有JS代码的JS文件都是这样加载的,在HTML的头部分。所有HTML都是在PHP的session\u start()之后创建的函数,并在PHP执行任何其他操作之前。Index@Borniet:作为旁注:除非脚本库特别声明了其他内容,否则最好在html底部添加脚本标记,以确保在加载html后加载它们。这里有解释这一点的好资源:-检查第
节将脚本放在底部
还介绍了不将脚本放在底部时的异常情况,等等。。。
$(document).on('click', "#popupClose", function(e) {
  disablePopup();
});
 $(document).on('keypress', "#popupClose", function(e) {
     if(e.keyCode == 27) { disablePopup(); }
    });