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で質問しましょう!
似たような質問が見つかりました
- JavaScript プラグイン無しでContactform7にdatepickerを実装 3 2022/10/25 02:18
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript jsで、switch文で書かれた分をif文にできませんか。 1 2022/07/28 15:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascript外部読み込みの際の引数
-
jqueryでのkeydownイベント発生...
-
外部JSファイルで値を受け取る方法
-
jQueryの基本的なことについて...
-
画像をゆっくりと切り替える方法
-
map とlightbox
-
音楽再生用jQueryプラグイン「j...
-
日本語記述が出来ません(XML?)
-
<a href="#" …>の意味を教えて...
-
別ファイルのfunctionの読み込み方
-
JavaScriptからVBScriptの呼び...
-
<script>...</script> 要素の内
-
GIFアニメの動きが止まってしま...
-
相対パスと絶対パスの速度
-
SCRIPT5007: 未定義または NULL...
-
bodyにidをつける理由は何ですか?
-
cssにjavascriptを入れる?呼び...
-
ホームページ上に『位置固定』...
-
pythonのWebスクレイピングでfi...
-
html メールリンクにて自動ファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
base64encodeでの文字化けについて
-
複数のjavascriptを使うと動か...
-
jqueryでのkeydownイベント発生...
-
Jqueryの干渉について
-
Base64に変換したHTMLの<script...
-
プラグイン無しでContactform7...
-
jQuery-datepicker on IE8
-
サイトにアクセスした際、数秒...
-
jQuery が動作しません。
-
javaスクリプトについて質問で...
-
jQueryでloadした要素の操作が...
-
jqueryについて(Lightboxとbxs...
-
scrollsmoothly.jsが動かない
-
JavaScriptで背景や文字色を色→...
-
jQuery UIのdraggableについて
-
colorboxの直接呼び出し方法に...
-
「jquery.csv2table.js」から生...
-
●jQuery;スクロールでついてく...
-
jQueryのdraggable縦書き出来ま...
-
Camera slideshowの使い方について
おすすめ情報
ご回答ありがとうございます。「;」が抜けていたのは記載ミスです。すみません。
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文をどうにかできないか問い合わせているところです。