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

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

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

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

jQuery

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

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

3回答

1549閲覧

イベント後にfunctionを実行したい

hoshx

総合スコア16

JavaScript

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

jQuery

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

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

1クリップ

投稿2016/03/28 05:28

###前提・実現したいこと
ASP.NETでid="main_contents"直下のdivのスタイルdisplayが変化した後に、
あるfunctionを実行させたいと考えています。

###発生している問題・エラーメッセージ
selectorがおかしいのか、イベントタイプが違うのか、希望通りのタイミングでfunctionが働いてくれません。

###ソースコード

$("#main_contents").find("div:eq(0)").css("display").on("change", (function () { //なんらかのファンクション }

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

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

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

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

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

tkturbo

2016/03/28 05:57

style.displayをどうやってchangeさせてるのか気になります
guest

回答3

0

$("#main_contents").find("div:eq(0)").css("display") で返ってくるのは文字列なので、cssメソッドのあとにonメソッドをつなげても find で取得した要素の display が変わったことを検出はできないです

属性の変更を監視するなら MutationObserver を使うのはどうでしょうか

javascript

1var elem = $("#main_contents").find("div:eq(0)").get(0) 2var pre_display = $(elem).css("display") 3var mo = new MutationObserver(function(mutations){ 4 var display = $(mutations[0].target).css("display") 5 if(pre_display !== display){ 6 pre_display = display 7 // なにかする 8 } 9}) 10mo.observe(elem, { 11 attributes: true, 12 attributeOldValue: true, 13 attributeFilter: ['style'] 14})

style属性の変更があると関数が実行されるので、前のdisplayと変わっていた時にだけ何かするという処理です

投稿2016/03/28 14:38

ryls-nmm

総合スコア633

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

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

0

Css - jQuery 日本語リファレンス

最初の要素が持つstyle属性の値を返します。

なので、

.css("display").on("change"

この時点でエラーになってませんか?
(stringに「on」という属性はない。)

実現案として、setIntervalして値が変わるのを検知する、なんてのを思いつきますが。

var somefunc = function(){ var node = $("#main_contents").find("div:eq(0)"); var styleDisplay = node.css("display"); return function(){ if(node.css("display") != styleDisplay){ // 処理 } styleDisplay = node.css("display"); } }(); window.setInterval(somefunc, 100);

とか?

投稿2016/03/28 08:18

tkturbo

総合スコア5572

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

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

0

とりあえずエラーがあったので微修正したコードを記載。

javascript

1$("#main_contents").find("div:eq(0)").css("display").on("change", function () { 2 //なんらかのファンクション 3})

投稿2016/03/28 05:32

m.kosuda

総合スコア153

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問