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

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

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

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

Q&A

解決済

2回答

1726閲覧

外部JSファイルの実行後に実行

momo_monom

総合スコア22

jQuery

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

0グッド

0クリップ

投稿2017/07/07 12:17

編集2017/07/07 14:05

以下のようなコードで、セレクトボックスの変更によって、
★の処理を実行したいのですが、
ページ最下部にある外部JSの処理が最後に行われてしまい、
★の処理が完了後に外部JSの処理で上書きされてしまいます。

外部JSも以下セレクトボックスの変更によって処理が実行される仕組みになっていて、
セレクトボックスを変更すると、★の処理と外部JSの処理が実行され、
外部JSのほうが後に処理されてしまうようです。

<select class="options" name="options"> <option value="A">A</option> <option value="B">B</option> </select> <script text="text/javascript"> $(function($) { <!-- セレクトボックスの変更で処理実行--> $('.options').change(function() { ★ 外部JSの実行後に実行したいこと }); }); </script> <!-- 外部JS --> <script type="text/javascript" src="other.js" ></script>

外部JSは、位置を動かすことも、中身を変更することもできません。
こういった場合、処理の実行の順番を制御する方法はありますでしょうか?

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

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

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

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

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

kei344

2017/07/07 13:00

「上書き」とはどのような挙動でしょうか。ある程度具体的に書いていただけませんか?
momo_monom

2017/07/07 13:25

replaceで文字を置換えようとしているのですが、★で処理した文字に一瞬切り替わってから、外部JSの処理した文字にまた切り替わってしまう現象です。
guest

回答2

0

このあたりを試してみてはいかがでしょう。

【jQueryで設定したイベントのバブリングと実行順について - Qiita】
http://qiita.com/clomie/items/394183b62393ea73a0ac

【jQuery のイベントハンドラの順番を入れ替える - Qiita】
http://qiita.com/shuhei/items/0b80c979435425500a51

投稿2017/07/07 13:54

kei344

総合スコア69398

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

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

0

ベストアンサー

以下のように行ってはいかがでしょうか?

HTML

1<!DOCTYPE HTML> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>タイトル</title> 6</head> 7<body> 8<label> 9 <select class="options" name="options"> 10 <option value="A">A</option> 11 <option value="B">B</option> 12 </select> 13</label> 14<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 15<script type="text/javascript"> 16 $(function ($) { 17 $('.options').change(function () { 18 document.body.appendChild( 19 $("<script>").prop( 20 { 21 src: "other.js" 22 } 23 )[0] 24 ); 25 console.log("message1"); 26 }); 27 }); 28</script> 29</body> 30</html>

other.jsの内容

javascript

1console.log("message2");

投稿2017/07/07 12:54

s8_chu

総合スコア14731

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

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

momo_monom

2017/07/07 13:23

ありがとうございます!試してみたところ、上手くいきませんでした。。。外部JSの中でも $('.options').change と同様のことが行われていて、外部JSの処理が最後になってしまうようです。
s8_chu

2017/07/07 13:25

> 外部JSの中でも $('.options').change と同様のことが行われていて とは、どういう意味なのでしょうか? また、こちらでは回答文のコードで message2 message1 という結果になることを確認できるのですが、どのように結果を確認していますか?
momo_monom

2017/10/11 15:40

ご提案いただいたコードを当てはめて試してみたのですが、外部JSを読み込んでいる<script type="text/javascript" src="other.js" ></script>は、</body>の直前に配置されていて、最終的にother.js内の $('.options').change の処理が行われてしまっているような感じです。ASPサービスを利用しているため、外部JSの読み込みコード/外部JS内のコードの改変ができず、このような状況になっておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問