質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

1734閲覧

jQueryのfunctionの別ファイル化

Yuinyan

総合スコア312

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/03/07 02:09

前提・実現したいこと

現在、RailsとjQueryなどでサービス開発をしています。
その中で共通する部分を切り出して、別のJSでも利用したい関数があるのですが、うまくいっていません。

切り分け前(同一jqueryファイル内)

var message = "見つかりませんでした。"; var message_type = "error"; notifyme(message, message_type); function notifyme (message, message_type){ new PNotify({ text: message, type: message_type, styling: 'bootstrap3', hide: false, buttons: { sticker: false } }); };

結果:ちゃんとpNotifyが表示されました。

切り分け後(別にnotifyme.jsを作った)

require("../notifyme.js"); var message = "見つかりませんでした。"; var message_type = "error"; notifyme(message, message_type);

notifyme.js

(function( $ ) { $.fn.notifyme = function (message, message_type) { new PNotify({ text: message, type: message_type, styling: 'bootstrap3', hide: false, buttons: { sticker: false } }); }; })( jQuery );

結果: エラーになります。

発生している問題・エラーメッセージ

VM7283 1:3860 jQuery.Deferred exception: notifyme is not defined ReferenceError: notifyme is not defined

requireの仕方が悪いのか、呼び出し方が悪いのか、それともプラグイン化がうまくいっていないのか、どうすればよいか教えてください!

補足情報(FW/ツールのバージョンなど)

jquery
rails5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

jsファイルを外部化するだけなら

javascript

1 function notifyme (message, message_type){ 2 new PNotify({ 3 text: message, 4 type: message_type, 5 styling: 'bootstrap3', 6 hide: false, 7 buttons: { 8 sticker: false 9 } 10 }); 11 };

の部分をjsファイルに保存してlinkタグで呼び出せばよいのでは?

投稿2018/03/07 02:25

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yuinyan

2018/03/07 03:30

すみません、もう少し具体的に教えていただくことは出来ますか?
yambejp

2018/03/07 05:20

回答したとおりです function notifyme (・・・){・・・} だけnotifyme.jsに書き呼び出すだけです。 質問者さんが例示のものは 「$.fn.notifyme」というjQueryの拡張を意図しているようですが、そのわりには 「notifyme(message, message_type);」とjQueryとは無関係に呼んでますよね? jQueryのライブラリとして機能させないのであれば単なるユーザー関数を書けばよいのでは? ということです
Yuinyan

2018/03/07 23:58

ご指摘のようにnotifyme.jsをつくって、既存のJSファイルからどのようにリンクするのでしょうか?呼び出し方がわかりませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問