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

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

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

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

Q&A

解決済

2回答

7039閲覧

jqueryで動的に追加した要素に対し、jquery.colorbox.jsのイベントを付与したい

ebsffzal

総合スコア107

jQuery

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

0グッド

0クリップ

投稿2016/11/12 07:06

みなさま

いつもお世話になっております。

jqueryの挙動について質問させていただきます。

jqueryで動的に追加した要素に対し、jquery.colorbox.jsのイベントを付与したいのですが、
どうしてもうまくいかず投稿いたします。


■環境
ネット上のVPSサーバ(LAMP環境)

■やったこと
・wordpress上で、画面を構築し、画面のリロードなしで
jqeuryで動的に要素「.add_elements」を追加する動きを実装。

・その追加した要素「.add_elements」に対して、jquery.colorbox.jsのイベントを付与したい

■起こったこと
①動的に追加した要素「.add_elements」に対し、次のようなjqueryを割り当てているが、
クリックしても動作しない。

↓javascriptの.jsファイルとして保存

javascript

1(function ($) { 2 3 $(".add_elements").colorbox({ 4 maxWidth:"50%", 5 }); 6 7})(jQuery); 8

■調査した情報
①当初、要素の追加漏れかと思い、ブラウザの開発者ツールで要素を確認したところ
目的の要素「.add_elements」は正しく追加されていました。

②js側は特に変更なく、画面が読み込まれた際に
$(".add_elements").colorbox({
というように、要素のクラス名に「.colorbox」というメソッドを割り当てています。

③画面初期表示の要素には上記のメソッドが正しく呼ばれています。

■期待する動作と質問事項
要素追加時に、jquery.colorbox.jsのクリックが反応するようにしたいです。


有識者の方のアドバイスをいただければ幸いです。
どうぞよろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

HTML

1<div> 2<a href="https://placehold.jp/24/cc9999/993333/350x250.png"><img src="https://placehold.jp/24/cc9999/993333/150x50.png" alt=""></a> 3</div> 4<button>add</button>

JavaScript

1$( function() { 2 $( 'a' ).colorbox( { maxWidth:'50%' } ); 3 $( 'button' ).on( 'click', function() { 4 $( 'div' ).append( '<a href="https://placehold.jp/24/cc9999/993333/350x250.png"><img src="https://placehold.jp/24/cc9999/993333/150x50.png" alt=""></a>' ); 5 $.colorbox.remove(); 6 $( 'a' ).colorbox( { maxWidth:'50%' } ).removeClass( 'no-color' ); 7 } ); 8} ); 9```**動くサンプル:**[https://jsfiddle.net/xvuvt1ua/](https://jsfiddle.net/xvuvt1ua/)

投稿2016/11/12 16:09

kei344

総合スコア69400

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

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

ebsffzal

2016/11/18 01:17

kei344さま サンプルまで提示いただきまして、大変ありがとうございました。 この問題につきましては、wordpress側で無限スクロールプラグインを使っていた為の問題でした。 プラグインを使わずに、jsのライブラリを実装することで解決にいたりました。
guest

0

質問者様のコードでは、
初期処理で存在するDOMの「add_elements」クラスに対してトリガーをセットしていることになっています。

つまり、
後から追加した「add_elements」クラスにはトリガーが適用されていないため、
何も起こらない状態となっています。

解決策として何通りかあるのですが、
とりあえず、要素を追加した後にまたトリガーを貼ってあげれば動きます。

投稿2016/11/12 10:11

mukkun

総合スコア882

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問