我正在用PHP/MySQL構建CMS,到目前爲止使用jQuery將排序和篩選添加到表列。通常情況下,它的效果很好,但偶爾排序和篩選元素將不會加載 - 這隻會發生在我手動刷新頁面時(從未通過鏈接訪問它),並且有時只是。有些時候我可以在它發生之前刷新幾次,其他時間可以連續發生幾次。ReferenceError:jQuery未定義
當問題發生時,Firebug的控制檯告訴我一個或兩個以下:
的ReferenceError:jQuery是沒有定義
的ReferenceError:$沒有定義
$(文件)。就緒(函數(){
(有時:類型錯誤:$( 「的tablesorter」)的tablesorter不是一個函數)
當一切正常時,控制檯是空白的。
我的頭文件,它加載的CMS的所有頁面,始於:
<?php ob_start(); ?>
<!DOCTYPE html>
<html>
<head>
<meta name="robots" content="noindex">
<title><?=$pg_title." - ".$site_name;?> | Lucid <?=$ver_num;?></title>
<link href="/favicon.gif" rel="icon" />
<link rel="stylesheet" href="css/styles.php" type="text/css" />
<script src="js/jquery-1.8.3.min.js" async></script>
<script src="plugins/jquery-tablesorter/js/jquery.tablesorter.min.js" async></script>
<script src="plugins/jquery-tablesorter/js/jquery.metadata.js" async></script>
<script src="plugins/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.min.js" async></script>
<script src="js/picnet.table.filter.min.js" async></script>
</head>
然後在頁腳文件,我把各種功能:
<script async>
$(document).ready(function(){
function validateNumber(event) {
var key = window.event ? event.keyCode : event.which;
if (event.keyCode == 8 || event.keyCode == 46
|| event.keyCode == 37 || event.keyCode == 39) {
return true;
}
else if (key < 48 || key > 57) {
return false;
}
else return true;
};
$('[class=sort-order]').keypress(validateNumber);
$(".tablesorter").tablesorter({
textExtraction: 'complex'
});
var options = {
filterDelay: 100,
clearFiltersControls: [$('.filter-clear')]
};
$('.tablesorter').tableFilter(options);
$('input:not(.filter)').live("change", function() {
window.onbeforeunload = function() { return "Your changes have not been saved, if you leave the page you'll lose them" };
});
});
</script>
</body>
</html>
<?php
ob_flush();
?>
我知道,這是一個相當普遍的問題,但我覺得我已經嘗試了所有解決方案(包括這裏列出的那些:JQuery - $ is not defined)
我試過使用setTimeout來延遲加載除jQu最多一秒鐘 - 沒有幫助。
我試過檢查jQuery是否定義與if(jQuery) - 它總是。
Firebug的Net標籤顯示我的jQuery文件的狀態爲304 Not Modified,無論問題是否發生。
據我可以告訴我所有的拼寫和語法都很好,應該給予它大部分時間工作。
我試過從外部網站而不是本地加載jQuery - 沒有區別。
我應該指出,我使用XAMPP在本地開發CMS,而不是遠程服務器,所以我認爲這可能與我的apache配置有些不協調。然後我把所有東西都上傳到遠程服務器,發現問題更糟,這表明這與加載頁面的速度有關,也許是異步?但我不知道我還能做些什麼來確保在加載任何腳本之前加載jQuery ...
輝煌,謝謝你,這樣一個簡單的修復。 我承認我只是盲目跟隨Firebug的Page Speed工具,當它建議使用異步... –