在php文件中,我使用include
包含以下js.php文件
在此之前我已经包含了jquery文件。
<script type="text/javascript">
$(document).ready(function(){
alert("hello");
});
</script>
但它不起作用。为什么?当我跳过$(document).ready函数时,它可以工作。
但我需要内部的jquery代码。怎么了?
答案 0 :(得分:32)
根据您的说法,最可能的答案是核心jQuery文件实际上并未正确包含在页面中。 你需要这样的东西:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
可能会丢失或输入错误。
答案 1 :(得分:25)
另一个无声失败的原因,并且所有剩余的回调都没有被调用:
$(document).ready(null);
因此,请检查是否有返回null的变量或语法错误。像这样:
$(document).ready(function($){}(jQuery));
请注意,上面的函数会立即调用,并返回undefined。
答案 2 :(得分:4)
$(function(){ alert(...); });
以防万一... 答案 3 :(得分:3)
另请参阅如何定义jquery包含标记。由于某种原因,您需要使用两个单独的标签打开和关闭标签。使用一个标签关闭它似乎不起作用:
作品:
<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"/>
答案 4 :(得分:1)
我也遇到了类似的问题,这就是我所做的。
确保 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)放在最后。
答案 5 :(得分:1)
是的,我注意到有时会出现问题,我为此写了安全的解决方案,解决了这个问题。
// 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:这是一种叫做'#46; duck punching&#34;更多关于:http://www.paulirish.com/2010/duck-punching-with-jquery/答案 6 :(得分:1)
遵循Zakas&#39; The art of throwing JavaScript errors,我开始在JavaScript中抛出自己的错误,作为查找JS问题的方法。
但不幸的是,这种方法开始导致jQuery ready()函数无声地失败,对于站点的不相关部分。 :(
我了解到以下情况有所不同:
throw new Error()
与
不同console.error()
所以,我开始使用console.error(),我仍然在控制台中显示红色突出显示。
答案 7 :(得分:1)
要检查的另一点:也许你的程序中有PHP错误。
根据您的服务器设置或CSS,您可能看不到致命错误消息。
答案 8 :(得分:0)
在我的情况下, document.ready没有被调用,因为一个html表单是通过Ajax请求发送到服务器的,只有部分文档被收回 - 并且在ajax请求之后没有调用文档就绪。
因此,重新加载该部分的某些按钮没有绑定到事件.click()atc ..因为这些按钮是新的,并且这些事件的绑定仅在文档就绪时首次调用 - 而不是用于AJAX
答案 9 :(得分:0)
刚出现这个问题,结果证明这是脚本标签中的拼写错误:
<script type="text/javscript">
请注意缺少的&#39; a&#39;在javascript中。改为简单:
<script>
解决了问题。
答案 10 :(得分:0)
如果以上都不起作用,另一个肮脏的技巧是将您的函数包装到 SetTimeOut 函数中,而无需任何时间,这只会在当前调用堆栈执行完毕后将代码排队运行
setTimeout(function(){
FillOpenTranscriptionTasks();
});
答案 11 :(得分:-3)
而不是$(document).ready(function(){...});
尝试
$(document).ready(abc());
function abc(){ .... }
为我工作。我自己搜索了许多地方,但找不到解决方案。随机尝试了这个并且工作!!
答案 12 :(得分:-4)
我遇到了这样的问题,只需将<script type="text/javascript">
更改为<script type="javascript">
,所有问题都已消失!