jQueryで「エラー: jQuery.dequeue is not a function」が出た場合の回避策

直感的に扱える書き方や豊富なライブラリが揃っていて、一度使い出すと楽しくてしょうがないJavaScriptのフレームワーク:jQueryを今頃使い始めたわけですが、その豊富なライブラリがたまにアダになる場合もあるみたいですね。結構ハマったのでメモ。

jQueryのバージョンアップに、ライブラリが対応してない場合があり、エラーに何度も遭遇しました。

エラー: jQuery.dequeue is not a function

これはjQueryがdequeueの処理を変えたために起こるエラーのようです。

僕が遭遇したのは「Interface.jsで簡単スムーススクロール – Emotional Web」の記事を参考にページ内のスムーススクロールを行おうとした場合でした。
利用したバージョンは以下になります。

これで試すと、どうしても「jQuery.dequeue is not a function」のエラーが出てしまいます。(Mac OS X / Firefox2)

調べてる内に、以下のサイトを発見。

引用:class指定もいらない超お手軽スムーズスクロール[interface.js,JavaScript,jQuery,スムーズスクロール] – BlurBlue-Note のコメント内のやりとり

—–
interface.js のソースファイルの「ifxscrollto.js」内を下記のように修正
jQuery.dequeue(z.e, ‘interfaceFX’)

jQuery(z.e).dequeue(‘interfaceFX’)
—–

「これで直る!」と試してみましたが、うまくいきませんでしたorz

このやりとりされた時とはまたバージョンが上がってるせいでしょうか?

それでいろいろ調べて、海外のMLの中で、dequeueの挙動を補うおまじないを書く事で解決しました。
$(function() {
// for エラー: jQuery.dequeue is not a function
( function( $ ) {
$.dequeue = function( a , b ){
return $(a).dequeue(b);
};
})( jQuery );
}

これでいいのかどうかわからないのですが、とにかくスムーススクロールもエラーが出ずにうまく動いてくれました。

古いjQueryのライブラリを使う時のメモでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


*