jQuery の存在を確認して、その後も jCarousel をロードすることはできませんか?
<script type="text/javascript">
if (typeof jQuery === "undefined") {
document.write('<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"><\/script>');
}
</script>
<script src="http://path/to/jcarousel" type="text/javascript"></script>
考え直して、これが常に機能するとは確信していません。これは、jQuery が jCarousel の前にロードされることを保証するとは思いません。より堅牢な代替ソリューションを思いつきました。jQuery がロードされていることを確認してから、jQuery を使用してライブラリをロードします$.getScript()
。次に、コードが のコールバックから呼び出されますgetScript
。これにより、すべてが適切な順序で行われます。
<script type="text/javascript">
if (typeof jQuery !== "undefined") {
loadLibs();
} else {
var script = document.createElement('script');
script.src = 'http://code.jquery.com/jquery.js';
document.getElementsByTagName('head')[0].appendChild(script);
var timeout = 100; // 100x100ms = 10 seconds
var interval = setInterval(function() {
timeout--;
if (window.jQuery) {
clearInterval(interval);
loadLibs();
} else if (timeout <= 0) {
// jQuery failed to load
clearInterval(interval);
}
}, 100);
}
function loadLibs() {
$.getScript("http://sorgalla.com/projects/jcarousel/lib/jquery.jcarousel.min.js", function(data, textStatus, jqxhr) {
myCode();
});
}
function myCode() {
$(document).ready(function() {
$('#mycarousel').jcarousel();
});
}
</script>
デモ: http://jsfiddle.net/jtbowden/Y84hA/2/
(左側の列のフレームワークを任意のバージョンの jQuery または他のライブラリに変更します。常にカルーセルを正しくロードする必要があります)
編集:
このバージョンは似ていますが、<head>
jQuery の場合と同様に、lib のロードを使用します。よりも高速です$.getScript()
:
http://jsfiddle.net/jtbowden/y8nGJ/1/