Php 为什么$(文档)。准备好不为我开火了吗?

Php 为什么$(文档)。准备好不为我开火了吗?,php,javascript,jquery,Php,Javascript,Jquery,在一个php文件中,我使用了include来包含以下js.php文件 在此之前,我已经包含了jquery文件 <script type="text/javascript"> $(document).ready(function(){ alert("hello"); }); </script> $(文档).ready(函数(){ 警惕(“你好”); }); 但它不起作用。为什么?当我跳过$(document.ready)函数时,它会工作 但是我需要jque

在一个php文件中,我使用了
include
来包含以下js.php文件 在此之前,我已经包含了jquery文件

<script type="text/javascript">

$(document).ready(function(){
     alert("hello");
});
</script>

$(文档).ready(函数(){
警惕(“你好”);
});
但它不起作用。为什么?当我跳过$(document.ready)函数时,它会工作

但是我需要jquery代码在里面。怎么了

  • 检查jQuery是否正确加载
  • 查看浏览器的进度条:它可能正在加载一些计数器,文档在加载之前尚未准备就绪:这通常发生在外部资源速度较慢时
  • 尝试
    $(函数(){alert(…);})以防万一
  • 检查在此onload绑定之前是否存在JS错误。使用Firefox的FireBug插件进行检查

  • 根据您所说的,最可能的答案是核心jQuery文件实际上没有正确地包含在页面中。 你需要像这样的东西:

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    
    
    

    很可能是缺少或键入不正确。

    另一个原因将导致静默失败,并且所有剩余的回调从未调用:

    $(document).ready(null);
    
    因此,请检查是否存在返回null的变量或语法错误。像这个:

    $(document).ready(function($){}(jQuery));
    
    请注意,上面的函数立即被调用,并且返回undefined。

    而不是$(document).ready(function(){…})

    试一试

    $(文档).ready(abc())

    函数abc(){ .... }


    为我工作。我自己找了很多地方,但找不到解决办法。随机试用,效果不错

    我遇到了这样的问题,只是把
    改成了
    ,所有的问题都消失了

    我也遇到了类似的问题,我就是这么做的

    确保document.ready放在javascript文件中定义的回调函数之后

    在这里,解析document.ready时尚未定义init

    //won't work
    $(document).ready(init);
    var init = function() {
       console.log('init not called');
    }
    
    正确的方法:

    //Works
    var init = function() {
       console.log('document is ready');
    }
    $(document).ready(init);
    

    请注意,$(document).ready(init)放在末尾。

    还要注意如何定义jquery include标记。似乎出于某种原因,您需要使用两个单独的标签打开和关闭标签。使用一个标记并关闭它似乎不起作用:

    作品:

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
    
    
    
    不起作用:

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"/>
    

    是的,我注意到有时会出现问题,我为此编写了安全解决方案,解决了这个问题

    // jquery plugin 'jquery.ready.fix.js'
    // @author Szymon Działowski
    ;(function ($) {
        $.fn.ready.old || $(function (r) {
            r = $.fn.ready;
            $.fn.ready = function (fn) {    $.isReady ? fn() : r(fn);    };
            $.fn.ready.old = r;
        });
    })(jQuery);
    
    之后,您可以运行以下代码:

    $(function () {alert('go')})
    
    而且它总是发出火警警报

    PS:这是一种称为“鸭子出击”的技术,更多关于:

    继Zakas之后,我开始在JavaScript中抛出我自己的错误,作为发现JS问题的一种方法

    但不幸的是,这种方法开始导致jQuery ready()函数在站点的不相关部分悄无声息地失败:(

    我了解到以下是不同的:

    throw new Error()
    
    不同于

    console.error()
    

    因此,我开始使用console.error(),但我仍然在控制台中得到了红色高亮显示。

    要检查的另一点:可能您的程序中存在PHP错误。PHP致命错误退出脚本并
    $(文档)。ready
    将永远不会执行


    根据您的服务器设置或CSS,您可能看不到“致命错误”消息。

    在我的例子中,未调用document.ready,因为html表单是通过Ajax请求发送到服务器的,并且只收到了文档的一部分-在Ajax请求后未调用document ready


    因此,重新加载的部分上的一些按钮没有绑定到事件。单击()atc..因为这些按钮是新的,并且这些事件的绑定仅在第一次准备文档时被调用-不适用于AJAX。

    刚刚出现这种情况,结果是脚本标记中的拼写错误:

    请注意javascript中缺少的“a”。更改为:


    修复了该问题。

    如果上述任何操作都不起作用,另一个肮脏的技巧是在没有任何时间的情况下将函数包装到SetTimeOut函数中,这只是在当前调用堆栈完成执行后将要运行的代码排队

         setTimeout(function(){
            FillOpenTranscriptionTasks();
        });
    

    你也可以发布你的PHP代码吗?发布你收到的错误。如果你在使用firefox,可以通过“工具>错误控制台”访问错误控制台。你在使用其他javascript框架吗?jquery文件的路径正确吗?firebug说$(document).ready(function(){未定义…我的jquery文件有问题吗?您使用的是Mootools吗?…如果是,请确保将jquery设置为兼容如果它说$(document)…不是意味着1)的函数另一个库正在捕获$,或者jQuery没有正确加载。我已经多次看到同样的问题——几乎总是这样出现jQuery标记。甚至我自己也这样做了:)使用Google loader可以帮助避免这些类型的输入错误,以及自动拉下jQuery的更新版本(如果需要):google.com/jsapi“>google.load(“jquery”,“1”);除非您的abc函数返回一个函数,否则此代码不会按照您的想法执行。abc将执行并将返回值发送到$(document).ready()。如果返回值为null,您可能会给其他人造成问题,就像我在回答中解释的那样。您不妨只执行abc();或者(function(){…})();例如,我在
    $()中使用了以前未定义的变量作为选择器输入。每个
    循环回调。