![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
jQueryプラグインである、Multifilter を使いたいと思ってます(http://tommyp.github.io/multifilter/)。はてなブログを使用しており、以下のように導入しても動作しません。
はてなブログhead要素に以下を
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1 …
本文には以下を書き込んでます。
<script type="text/javascript" src="http://www.googledrive.com/host/...../"></script>
<script type="text/javascript">
(function($){
$(document).ready(function() {
$('.filter').multifilter()
})
}(jQuery));
</script>
Multifilter プラグインは google drive 上にホスティングしています。
safari上で以下のエラーが出てしまいます。
TypeError: undefined is not a function (evaluating '$('.filter').multifilter()')
is not a function と出てますので、ホスティングがうまくいってないのかとも思ったのですが、ページのソースを見たところ、スクリプトは読み込まれているようでした。
jsやjqueryはあまりいじったことなく、にっちもさっちいかない状態です。
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
ANo3です。
どうやら、ANo4様のご指摘の通りのようですね。
Multifilterが初期設定をした後に、jQueryの再読み込みで上書きされてしまっているのが原因と思われます。
ANo4様がご呈示のリンク先に対処法が記されていますが、同様にMultifilter自体の初期設定も遅らせて行う必要がありますね。
jQueryの再読込み後に、Multifilterを読込む必要がありますので、スクリプトから追加読込みを行う(script要素を作成)ようにするか、Multifilter本体を関数化するなどしておいて、実行のタイミングを遅らせてあげるなどの必要がありそうです。
ご回答ありがとうございました。結局は、はてなブログにおける問題であることがわかりました。編集可能な範囲外で、且つ再度 jQuery が読み込まれていたため動作しなかったのが原因でした。multifilter をページ読み込み後に読み込ませるようにすることで解決しました。ありがとうございました。
No.4
- 回答日時:
はてなブログ固有の問題ではないでしょうか?
http://rochefort.hatenablog.com/entry/2013/12/10 …jquery本体も、head内ではなくbodyの下の方で、
script src="jquery.js"
script src="multifilter.js"
script src="自分のスクリプト"
の順に読み込んでみるといかがですか?
ご回答ありがとうございました。結局は、はてなブログにおける問題であることがわかりました。編集可能な範囲外で、且つ再度 jQuery が読み込まれていたため動作しなかったのが原因でした。multifilter をページ読み込み後に読み込ませるようにすることで解決しました。ありがとうございました。
No.3
- 回答日時:
ANo2です。
>読み込めてることも確認しました。
あらら・・・ やっかいですね。
次に思いつくのは、ANo1でもあげたバインドの問題。
safari5.1からは対応しているようですが、試みとして、以下のサイトにあるバインドを定義する方法で対応可能かも知れません。
https://developer.mozilla.org/en-US/docs/Web/Jav …
それでもダメな場合は、いよいよ、エラーの発生個所を特定して対処するということになってしまうかな・・・
わざわざ、ご回答ありがとうございます。今の所、解決はしていません。今バインド等学習しているとこです。他のwebブラウザーでも動作しなかった&ローカルに単純にhtmlとjQueryを書いたところ問題なく動作しましたので、はてなブログとの相性のような気もしてきました。
No.2
- 回答日時:
safariを知らないので、かなりの推測まじりですが・・・
エラーメッセージからすると、質問者様と同じことを考えますが、
>ページのソースを見たところ、スクリプトは読み込まれているようでした。
ページのソースでは、読み込まれているかはわからないのでは?
デバッグツールなどでDOMの内容を確認なさって、読み込めているということでしょうか?
ひとつのテストとして、読込後に
alert($().multifilter);
などとしてみて、
function (options) {
"use strict";
var settings = $.extend( {
'target' : $('table'),
'method' : 'thead' // This can be thead or class
}, options);
・・・ 以下省略 ・・・
が表示されれば、きちんとjQueryに拡張されていることが確認できるはずです。
されない場合は、
1)JSファイルが読み込まれていない。
2)読み込めているが、スクリプト実行中にエラーを起している
が考えられます。
もう少し切り分けて、問題がどこにありそうかを調査なさるのが第一歩かと。
検索してみると、『safariの場合に"TypeError: ‘undefined’ is not a function"が出る』というものが数多く見つかります。
イベントのバインドに関するものが大半のようですが、以下あたりが多少は関係あるかも。
http://d.hatena.ne.jp/kkotaro0111/20120819/13453 …
http://www.crossl.net/blog/jquery_click_function …
2番目を見ると、safariを最新版にすることで、対応可能かもしれませんね。
…って、それじゃ回答になってないじゃん(苦笑)
ご回答ありがとうございました。結局は、はてなブログにおける問題であることがわかりました。編集可能な範囲外で、且つ再度 jQuery が読み込まれていたため動作しなかったのが原因でした。multifilter をページ読み込み後に読み込ませるようにすることで解決しました。ありがとうございました。
No.1
- 回答日時:
$('.filter').multifilter() とその次の行の }) の;が抜けてるのも気になりますが。
>TypeError: undefined is not a function (evaluating '$('.filter').multifilter()')
はmultifilterの関数がエラーってことだと思うのですが、multifilter.min.js自体はどこで読み込んでるのですか?見た感じ記述ないですよね?
ご回答ありがとうございました。結局は、はてなブログにおける問題であることがわかりました。編集可能な範囲外で、且つ再度 jQuery が読み込まれていたため動作しなかったのが原因でした。multifilter をページ読み込み後に読み込ませるようにすることで解決しました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
base64encodeでの文字化けについて
-
クロスドメインで取得したペー...
-
Base64に変換したHTMLの<script...
-
<a href="#" …>の意味を教えて...
-
別ファイルのfunctionの読み込み方
-
bodyにidをつける理由は何ですか?
-
チェックボックスのチェックを...
-
$.ajaxのscriptCharsetについて
-
JavascriptとJqueryを混在し記述
-
複数のJavascriptを1つのscrip...
-
(Javascript)印刷するファイル...
-
HTMLソースからURLだけを抜き出...
-
フレームを跨ぐドロップダウン...
-
子フレームの自動リロードは可...
-
onunloadイベントでの画面制御...
-
メールフォーム、受信メールの...
-
相対パスと絶対パスの速度
-
<a href>での背景色について。
-
【javascript クロスブラウザ...
-
JavaScriptからVBScriptの呼び...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<div>のタッチ状態を維持したま...
-
複数のjavascriptを使うと動か...
-
base64encodeでの文字化けについて
-
プラグイン無しでContactform7...
-
bxslider、画像が3枚以上になる...
-
「jquery.csv2table.js」から生...
-
jquery ui.resizable 使い方
-
jqueryについて(Lightboxとbxs...
-
jqueryを2つ設置した事で片方...
-
CrossSlideのスライドショーが...
-
DreamWeaverでJS
-
シャドウボックスとjQueryを共...
-
JW FLV Playerのプレイリスト連...
-
マウスオーバー+クリカブルマッ...
-
jqueryのcolorboxを読込直後に...
-
jQueryBlockUIをフレーム内で動...
-
jQuery GalleryViewスライドショー
-
mootoolsとjQueryの共存がうま...
-
noscript内にlinkは間違い?
-
IEのセキュリティにブロックさ...
おすすめ情報
ご回答ありがとうございます。「;」が抜けていたのは記載ミスです。すみません。
multifilter.min.js の読み込みは、google drive 上にアップロードしており(正確には、min版ではないですが。)、
<script type="text/javascript" src="http://www.googledrive.com/host/.../"></script>
の1行で読み込んでいます。「...」の部分は英数字の文字列となっております。
fujillinさんのご回答にある「alert($().multifilter);」にて確認したところ、読み込めてることも確認しました。
テキストファイルに直に書き込んでブラウザーで開くと問題なく動作することは確認しました。
weakweak 様ご回答ありがとうございます。はてなブログ特有の問題?であることがわかりました。ご回答にあるように、可能な限り、下の方に「jquery」、「multifilter」、「スクリプト」を記載して、確かめたところ、うまくいきませんでしたが、
そこで、はてなブログのページのソースを丸々コピペしてローカルで色々と確かめてみました。すると、以下の1行を消したところ問題なく動作しました(この1行ははてなブログで編集可能なところより下に記載されている)。
———
<script type="text/javascript" src="http://blog.hatena.ne.jp/js?version=e26f39a279d2 …
———
続きです...
<script type="text/javascript" src="http://blog.hatena.ne.jp/js?version=e26f39a279d2 …
の中身は、
----
window.define = undefined;
/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license
...省略...
----
jQuery 1.9.1 の先頭に window.define の一文が付け加わったものだとわかりました。読み込みをキャンセルしたりできるのか調べたりしてみたのですが、良案は今の所ない状態です。
ダメ元で、はてなブログ側に、問題の1文をどうにかできないか問い合わせているところです。