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

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

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

Q&A

解決済

2回答

2645閲覧

setTimeoutの中でjqueryを利用しようとすると $ is not definedエラーになる

igar

総合スコア110

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

0グッド

0クリップ

投稿2018/08/18 18:45

編集2018/08/18 21:22

以下のように、既にロードされているjqueryをsetimeoutの中で呼び出そうとすると、なぜかエラーに鳴ってしまいます…。

setTimeout(function(){ $("body") ; },1000)
809 VM51666:4 Uncaught ReferenceError: $ is not defined at <anonymous>:4:2 (anonymous) @ VM51666:4 setTimeout (async) (anonymous) @ VM51666:3
$("body") // 出力される

追記

すみません、情報が少なかったかも知れません。
settimeoutのなかで$("body") ;だけ書いてたのは寝ぼけていました。console.logをするべきでしたね。

検証していたサイトはニコニコ動画の動画ページです。大事な情報が抜けててすみませんでした。ニコニコ固有の問題かもしれません。その場合は諦めます…。

例:初音ミク が オリジナル曲を歌ってくれたよ「メルト」 - ニコニコ動画

画像を見てもらえると早いかと思います。

なぜかサーバーの画像がmarkdownで映らないので直接見ていただけたら助かります…これまでは出来てたんだけどな…

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_a6107406-b90a-40ad-9f4f-e9a76c5ad819.png

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_a6107406-b90a-40ad-9f4f-e9a76c5ad819.png

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

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

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

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

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

kei344

2018/08/18 19:00

書かれている状況が再現するコードを提示されたほうが回答を得やすいと思います。
m.ts10806

2018/08/18 21:04

コードとエラーメッセージはブロックをわけてください。コードも単体毎にわけたほうが再現確認を行いやすいです。$("body") だけでは何も出力していないと思います。何をしようとして何を出力しようとしているコードなのか全体の流れが分かるように、できればjQueryの読み込み記述も含んだhtmlもご提示ください。
m.ts10806

2018/08/18 21:24

質問編集画面ではPCであればリアルタイムプレビューが表示されるのでそちらを確認しながら調整してくださいね。画像も同様です。いずれにしても既に指摘があるように再現確認できるコードではありませんので、ニコニコ動画固有の問題であるといきなり書かれても検証しようがありません。
igar

2018/08/18 21:29

これでもMarkdownは2年以上使っていますので、書き方が間違っているってことはないかと思います。プレビューももちろん見てます。
m.ts10806

2018/08/18 21:38

うーん。ではそのURLリンククリックして表示確認されたんですよね?ErrorのXMLが表示されてますが、それが見てもらいたい内容なのですか?
m.ts10806

2018/08/18 21:43

繰り返しますが、提示内容だけでは再現確認とれないので、再現確認のとれるコードを提示してください。
guest

回答2

0

ベストアンサー

$('body')で動いているように見えるのはjQueryではなく、コンソール専用の関数MDN)です(返り値がjQueryオブジェクトではなく、単なるDOM要素です)。

コンソール用の$が呼ばれるということは、ページ内でjQueryが使われていない可能性もあります。どうしても使いたければ、動的に<script>で読み込ませる必要があるかもしれません。

投稿2018/08/19 01:01

編集2018/08/19 01:03
maisumakun

総合スコア145121

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

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

0

おそらく、maisumakun さんの回答が正解と思いますが、補足しておきます。

Console API

コンソールにおける $() は「Console Standard」では未定義であり、一部のブラウザに実装されている独自拡張です(全てのブラウザで実装されている保証はありません)。

従って、$() の標準的な機能はありませんし、ブラウザがバージョンアップされれば、自由に内部実装を変更して良いのです。
$() はあくまでもそのブラウザのそのバージョンで動く、相互運用性も前方互換性も保証できない挙動である事は認識しておいてください。

Google Chrome v68.0.3440.106 (Windows 64bit)

私が検証した範囲では、「Google Chrome v68.0.3440.106 (Windows 64bit)」におけるコンソールの $() は非同期関数において、スコープチェーン上に $ が存在しない可能性が高いと思われます。
すなわち、下記コードは動作しますが、

JavaScript

1$('body'); 2 3(function (){ 4 $('body'); 5}());

下記コードは動作しません。

JavaScript

1document.addEventListener('click', () => $('body'), false); // ReferenceError: $ is not defined 2setTimeout(() => $('body'), 0); // ReferenceError: $ is not defined

繰り返しますが、これはあくまでも、「Google Chrome v68.0.3440.106 (Windows 64bit)」のみで確認した動作というだけです。
Google Chrome 以外では別の動作になる可能性がありますし、Google Chrome がバージョンアップすれば挙動が変わる可能性があります。

Re: igar さん

投稿2018/08/19 02:44

編集2018/08/19 02:54
think49

総合スコア18156

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問