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

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

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

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

Q&A

解決済

2回答

2487閲覧

jqueryのイベントオブジェクト分岐について教えてください

nitas22260ak

総合スコア5

jQuery

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

0グッド

0クリップ

投稿2016/06/19 12:49

HTMLで作ったテーブルの中に、jqueryのajaxでphpよりデータベースを検索し、その結果をテーブルの中に子テーブルとして表示しています。

このとき、子テーブル内にはデータベースから検索したデータの一覧が表示され、各行には操作ボタンが一緒に作成されます。この作成されたボタンをクリックすることで別の領域にデータを転記、処理するのですが、そのとき、以下のような動作にしたいと考えています。

1)検索結果が表示されると同時に1番目のデータを転記する。
2)(1番目のデータが転記されていても)1番目のデータ以外のデータが望ましいと思うとき、該当の操作ボタンをクリックすることで該当のデータを転記、上書きする。
※大半の場合はあらかじめ望ましいと思われるデータ順にSQL側で並べているため1番目のデータでよいのですが、例外的な選択が必要になる場合があり、その時に選択が必要になります。

1)のイベントを検知するのにon('DOMSubtreeModified propertychange')を使用して2)のイベントを検知するのには通常の.on('click')を使っています(中に作成されるボタンは名前属性で先に登録しています)。
on('DOMSubtreeModified propertychange')を使っている理由はこのテーブルは他の複数の入力パラメータが更新される都度更新されるためです。

2)だけの動作は問題なく、1)だけの動作も問題ないのですが、1)2)を両方実行させようとすると、(イベントタイプを見る限り)clickのイベントオブジェクトも'DOMSubtreeModified propertychange'と判定されているため、処理の分岐ができずにいます。

何かアドバイスはありますでしょうか?

$("#products").on('DOMSubtreeModified propertychange', function(event){
event.stopPropagation();
event.preventDefault();
//テーブルが更新されると一番目のデータを自動的に転記する処理
}

$("#products").on('click','[name="select_products"]',function(event){
event.stopPropagation();
event.preventDefault();
//一番目のデータ以外に置き換えたいときの処理
}

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

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

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

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

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

kei344

2016/06/19 12:52

コードは少なくともAjaxの部分くらいまで提示できませんか?HTML要素がどうなっているかも有るとさらに回答しやすいと思います。また、コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
matobaa

2016/06/20 02:21

「clickのイベントオブジェクトも'DOMSubtreeModified propertychange'と判定されている」というあたりがちょっと怪しいな、と思ったのですが、そのように判断した根拠はありますか? クリックしてブレークポイントで止めてイベントを見たなど。
guest

回答2

0

すみません。不在にしていてご返信遅くなりました。皆さんアドバイスいただきありがとうございます。
コードの掲載の仕方。知らなくてすみません。今後そのようにします。

clickオブジェクトもDomSubTreeModifiedで判定されているのは確かConsoleで.typeで確認したと思います。

それより回答で頂いた様にDomSubTreeModifiedを使わず、input要素を経由してchangeで検知すればよいだけだということに気づいていませんでした。

ありがとうございました。

投稿2016/06/22 15:37

nitas22260ak

総合スコア5

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

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

0

ベストアンサー

DOMSubtreeModified propertychangeを使わない方法で「検索結果が表示されると同時に」を実現する方法を探すべきかと思います。現在の質問文のコードだけでは、どのような方法で#productsに追加しているのか不明なため、それ以上アドバイスできません。

投稿2016/06/21 04:14

masaya_ohashi

総合スコア9206

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問