
追記: 2012/01/24
WordPressでそれほど自分でJavaScriptを書くということがなかったけど、一つだけウィジットでAjaxを使って別なページを読み込むということをしていた。
コードを見直してみるとなぜかjQueryではなくprototype.jsで書かれている。
あれ? それほど昔に書いた物ではないはずなのになんでだろう? とそのときは思った。
それはいいとして、とりあえずjQueryに書き直すことに。
$(function(){
$.ajax({
url: '/recentbook.php',
type: 'get',
timeout: 5000,
success: function(data){
$('#recentbook').html(data);
}
});
});
しかし、試してみても動作しない。
Firebugを確認してみるとコンソールにエラーが”$ is not a function”と出ている。
もしかしてと思い、$をjQueryに書き換えてみた。
jQuery(function(){
jQuery.ajax({
url: '/recentbook.php',
type: 'get',
timeout: 5000,
success: function(data){
jQuery('#recentbook').html(data);
}
});
});
すると、ちゃんと動作した。
WordPressがどうやって動いてるかとかあんまり気にしてなかった。
grepでファイルを調べてみるとやっぱりというか、jQueryに完全移行しておらずprototype.jsもまだ使用していることが原因のようだ。
WordPress & jQuery: “$ is not a function”
$の使用が競合するのでjQueryでは$を使用しないようにしているということ。
(もしかして、前の時にもjQueryが動かなくて、しょうがなくprototype.jsで書いたのかもしれない。)
実際にWordPressのJSファイルでもご丁寧に”jQuery”と書いていることが分かった。
$grep -r jQuery *
抜粋...
wp-includes/js/wp-lists.dev.js: jQuery.each( res.responses, function() {
wp-includes/js/wp-lists.dev.js: var color = jQuery(el).css('backgroundColor');
wp-includes/js/wp-lists.dev.js:})(jQuery);
wp-includes/media.php: jQuery(document).ready(function($){
それほど、沢山のコードが必要なわけではなかったので、jQueryといちいち書いてもいいかなと、とりあえず、そのままにすることにした。
jQueryと書くのは面倒だということであれば、次のような感じで$jとかにエイリアスすればよいかと。
var $j = jQuery;
$j(function(){
$j.ajax({
url: '/recentbook.php',
type: 'get',
timeout: 5000,
success: function(data){
$j('#recentbook').html(data);
}
});
});

