新スキンは素晴らしいんですが、問題点の一つが『jQueryのバージョンが強制的に1.3にされてしまう』という点です。
HTMLのお尻の方に嫌がらせのごとく1.3が埋め込まれていて、1.6をフリープラグインで埋め込んでも1.3に戻されてしまうんですよね。
これでは最新のプラグインは動きませんし、動作も鈍いです。
それを見事に解決した記事があったのでまずご紹介します。
わざめーばさんの記事
新しいバージョンのjQueryが使えない?新デザイン『CSS編集用デザイン』
ここでのコードはこんな感じです。
< script type="text/javascript" >
(_JQ162_=jQuery)(function(){
$=jQuery=_JQ162_;
});
</script>
※もちろん、(_JQ162_=$)(function(){$=jQuery=_JQ162_;});でもOKです。
すんばらしいアイディア!
わざめーばさん、勝手に紹介してしまいスミマセン(まずかったら言っていただければ書きなおします)。
ただこれだと、windowのプロパティに『_JQ162_』←コイツが生えてしまうので、自分は少し変えて使っています。
< script type="text/javascript" >
(function($){
var JQ16 = $;
JQ16(function(){
window.$=window.jQuery=JQ16;
});
}(jQuery));
</script>
やってることは全く同じで、クロージャの中で完結させているだけです。
つまり・・・
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
< script type="text/javascript" >
(function($){
var JQ16 = $;
JQ16(function(){
window.$=window.jQuery=JQ16;
});
}(jQuery));
</script>
これをプラグインの先頭に張ればめでたく1.6が作動します。
名前空間を上書きしているだけなので、デメリットもありません。安心!
ただこれだけだとパクリ記事みたいなので、自在に1.3と1.6をスイッチするメソッドを考えてみました。
1.3系じゃないと動かないプラグインを使ってる人もこれで安心(?)
< script type="text/javascript" >
var JQobj = (function(){
var jq=jQuery;
var jq13;
return{
getJQ16:function(){
jq13 = window.jQuery !== jq ? window.jQuery : jq13;
window.jQuery = jq;
},
getJQ13:function(){
window.jQuery = window.$ = jq13 || window.jQuery;
}
};
}());
/*jQueryを1.6にする*/
JQobj.getJQ16();
/*1.3にする*/
JQobj.getJQ13();
</script>
これで多い日も安心だ!・・・
と、ここで勘のいい方はお気づきかもしれませんが、JQobjが思いっきりグローバル変数ですw
そこでどうしようかと考えたのですが、jQueryの静的メソッドにしてしまえ、という結論にw
< script type="text/javascript" >
(function($){
$.jqVersionSelector = (function(){
var jq=jQuery;
var jq13;
return{
getJQ16:function(){
jq13 = window.jQuery !== jq ? window.jQuery : jq13;
window.jQuery = jq;
},
getJQ13:function(){
window.jQuery = window.$ = jq13 || window.jQuery;
}
};
}());
var sel16 = $.jqVersionSelector;
jQuery(function(){
$.jqVersionSelector = sel16;
});
}(jQuery));
/*jQueryを1.6にする*/
$.jqVersionSelector.getJQ16();
/*1.3にする*/
$.jqVersionSelector.getJQ13();
</script>
これでおっけぇぇぇ!
では早速バージョンを変えまくって遊んでみましょう。
< script type="text/javascript" >
jQuery(function(){
$.jqVersionSelector.getJQ16();
alert(jQuery.fn.jquery);/*バージョンチェック*/
$.jqVersionSelector.getJQ13();
alert(jQuery.fn.jquery);/*バージョンチェック*/
$.jqVersionSelector.getJQ16();
alert(jQuery.fn.jquery);/*バージョンチェック*/
$.jqVersionSelector.getJQ16();
alert(jQuery.fn.jquery);/*バージョンチェック*/
$.jqVersionSelector.getJQ13();
alert(jQuery.fn.jquery);/*バージョンチェック*/
$.jqVersionSelector.getJQ13();
alert(jQuery.fn.jquery);/*バージョンチェック*/
$.jqVersionSelector.getJQ16();
alert(jQuery.fn.jquery);/*バージョンチェック*/
});
</script>
結果はこちら。
ぜひ遊んでみてくださいw
