为什么$(文件)。我没有为我开火?
在一个php文件中我使用include
来包含以下js.php文件,在此之前我已经包含了jquery文件。
$(document).ready(function(){ alert("hello"); });
但它不起作用。 为什么? 当我跳过$(document).ready函数时,它可以工作。
但我需要内部的jquery代码。 怎么了?
根据您的说法,最可能的答案是核心jQuery文件实际上并未在页面中正确包含。 你需要这样的东西:
机会是,这是丢失或键入不正确。
另一个会无声地失败的原因,并且所有剩余的回调都没有被调用:
$(document).ready(null);
因此,请检查是否有返回null的变量或语法错误。 像这个:
$(document).ready(function($){}(jQuery));
请注意,上面的函数会立即调用,并返回undefined。
- 检查jQuery是否正确加载。
- 查看浏览器的进度条:它可能正在加载一些计数器,文档在加载之前还没有准备好:这通常在外部资源很慢时发生。
- 尝试
$(function(){ alert(...); });
以防万一… - 在此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(){….}
为我工作。我自己搜索了很多地方,但找不到解决办法。 随便尝试了这个并且工作!!
我有这样的问题,只需将更改为
,所有问题都消失了!