jQuery UIをロードするスクリプトタグは、jQueryUIスクリプトがロードされる前に実行されたjQueryのスクリプトタグのJavaScriptに依存しています。deferjQueryスクリプトタグで属性を使用すると、競合状態が発生し、jQuery UIが最初に読み込まれて失敗する(に追加tabsされないjQuery.fn)可能性があります。したがって、関数を使用するコードがコールバックにあるかどうかは関係ありません。tabsready
を使用する必要はまったくないのでdefer、これを修正する代わりにdefer、元の問題を使用して質問を投稿しないことをお勧めします。追加deferすることで解決できるわけではないからです。
ただし、引き続き使用する場合は、jQuery UIスクリプトタグを削除し、代わりにページの下部、終了タグdeferの直前に配置します。</body>
<script>
(function() {
var waitingForUI = false;
loadScripts();
function loadScripts() {
if (window.jQuery && window.jQuery.fn.tabs) {
// Both jQuery and jQuery UI are loaded.
// ==> your code using `tabs` here <==
}
else {
if (window.jQuery) {
// jQuery is loaded but not jQuery UI, go get it
// unless we've already started loading it
if (!waitingForUI) {
waitingForUI = true;
jQuery.getScript("/your/path/to/jquery/ui");
}
}
setTimeout(loadScripts, 10);
}
}
})();
</script>
</body>
これにより、jQueryが読み込まれるのを待ってから、jQuery UIスクリプトを読み込んでから、コードをトリガーします。
または、もちろん、jQueryとjQuery UIの両方を含む独自のスクリプトファイルを作成し、その後にを使用してコードを作成しtabs、その1つのファイルをロードします。