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

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

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

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

jQuery

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

Q&A

解決済

1回答

3605閲覧

html()でscriptタグを書き換えた際、書き換え前の処理が走らないようにしたい

nae_stage

総合スコア274

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2016/10/13 06:19

ajaxでhtmlを受け取り、受け取ったhtmlでbody要素内を書き換えたいと考えています。

ajaxでの通信が成功した際の処理は、以下のようにしています。

$.ajax({ ・・・ }).done(function(data, status, jqXHR){ var response = $(jqXHR.responseText); for (var i = 0; i < response.length; i++) { if (response[i].id === 'content') { $('body').html(response[i].outerHTML); return; } } })

この時、body要素内にあるscript要素も書き換えられています。
書き換える前のscript要素では

<script type="text/javascript"> $(window).on('resize', function () { TestMethod(); }); </script>

というように、windowのリサイズイベントの処理を記述しています。
書き換え後のscript要素には、この処理はありません。

htmlの書き換え完了後、ブラウザの幅を変えて、リサイズイベントを発生させると、
書き換え前の処理が走ってしまいます。
なぜ書き換え前の処理が走ってしまうのでしょうか?
書き換え前の処理を走らせないようにするには、どうすればよいでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

書き換える直前にイベントを削除すれば良いような。

JavaScript

1$( '*' ).off(); 2```**動くサンプル:**[https://jsfiddle.net/t7fxzemb/](https://jsfiddle.net/t7fxzemb/) 3 4--- 5 6.off() | jQuery API Documentation】 7[http://api.jquery.com/off/](http://api.jquery.com/off/) 8 9【jQueryで登録済みイベントハンドラを一覧する方法 - それマグで!】 10[http://takuya-1st.hatenablog.jp/entry/2014/04/05/042658](http://takuya-1st.hatenablog.jp/entry/2014/04/05/042658)

投稿2016/10/13 06:49

kei344

総合スコア69407

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

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

nae_stage

2016/10/13 07:00

回答ありがとうございます。  $('body').html(response[i].outerHTML); の直前に  $( '*' ).off(); を入れてみましたが、結果は変わらずでした・・・
kei344

2016/10/13 07:03

$( '*' ).off(); はセレクタで扱える要素しか対象にしていないので、$( window ).off(); $( document ).off(); みたいにするとどうでしょう。
nae_stage

2016/10/13 09:42

希望通りの動きになりました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問