为什么$(文件)。我没有为我开火?

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

  $(document).ready(function(){ alert("hello"); });  

但它不起作用。 为什么? 当我跳过$(document).ready函数时,它可以工作。

但我需要内部的jquery代码。 怎么了?

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

  

机会是,这是丢失或键入不正确。

另一个会无声地失败的原因,并且所有剩余的回调都没有被调用:

 $(document).ready(null); 

因此,请检查是否有返回null的变量或语法错误。 像这个:

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

请注意,上面的函数会立即调用,并返回undefined。

  1. 检查jQuery是否正确加载。
  2. 查看浏览器的进度条:它可能正在加载一些计数器,文档在加载之前还没有准备好:这通常在外部资源很慢时发生。
  3. 尝试$(function(){ alert(...); }); 以防万一…
  4. 在此onload绑定之前检查是否有JS错误。 使用Firefox的FireBug插件进行检查。

另请参阅如何定义jquery包含标记。 由于某种原因,您需要使用两个单独的标签打开和关闭标签。 使用一个标签关闭它似乎不起作用:

作品:

  

不起作用:

  

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

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

这里,在解析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 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:这是一种叫做“鸭子打孔”的技术更多关于: http : //www.paulirish.com/2010/duck-punching-with-jquery/

遵循Zakas的“ 抛出JavaScript错误的艺术” ,我开始在JavaScript中抛出自己的错误,作为查找JS问题的方法。

但不幸的是,这种方法开始导致jQuery ready()函数无声地失败,对于站点的不相关部分。 🙁

我了解到以下内容有所不同:

 throw new Error() 

不同于

 console.error() 

所以,我开始使用console.error(),我仍然在控制台中得到了红色突出显示。

要检查的另一点:也许您的程序中有PHP错误。 PHP Fatal错误退出脚本, $(document).ready将永远不会执行。

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

在我的情况下, document.ready没有被调用,因为一个html表单是通过Ajax请求发送到服务器的 ,只有部分文档被收回 – 并且在ajax请求之后没有调用文档就绪。

因此,重新加载的部分上的一些按钮没有绑定到事件.click()atc ..因为这些按钮是新的,并且这些事件的绑定仅在文档就绪时首次调用 – 而不是针对AJAX。

刚刚出现这个问题,结果certificate脚本标签中存在拼写错误:

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

解决了这个问题。

代替$(document).ready(function(){…});

尝试

$(document).ready(abc());

function abc(){….}

为我工作。我自己搜索了很多地方,但找不到解决办法。 随便尝试了这个并且工作!!

我有这样的问题,只需将更改为 ,所有问题都消失了!