2017-03-21 8 views
-2

DOMエレメントをclass = "divhide"で$ .getJSONで追加しました。()上のライブイベントは機能しません

今私は、クラス=「タイトル」と多くのdiv要素を持っていると私は、イベントを追加するが、これは動作しません。

$('.title').on("click",'div.divhide' , function() { 
    var description = $(this).find('.divhide') 
    description.slideToggle(); 
}) 

私もgetJSONでクラス=「タイトル」を追加します。

+3

イベントを試してアタッチするときに '.title'がDOMに存在しないか、イベントを発生させたものの中にネストされた' .divhide'要素がありません。私のお金は後者です。確かめるためにはHTMLを見なければなりません。 –

+0

上記のgetJSONに.title要素も追加しましたか?それのように聞こえる。 –

+1

ようこそスタックオーバーフローへ。あなたは静的で動的なアイテムをより多くのコンテキストを提供できますか? – Twisty

答えて

0

クリックハンドラを追加した後に要素をgetJSON経由で追加すると、ハンドラは新しい要素にアタッチされません。

ハンドラを適用するときに要素が存在する必要があります。だから私たちは代表団を利用しています。あなたがないかもしれないとして、

$('body').on("click",'div.divhide' , function() { 
    var description = $(this).find('.divhide') 
    description.slideToggle(); 
}) 

これは(そしておそらくない賢明な)極端な例です。つまり、常に存在する、またはハンドラのコードが適用される場合、最低でも存在します親要素にハンドラをアタッチページのすべてのクリックをフィルタリングしたいただし、ボディは常に存在するため、最初のクリックがdiv.divhideであったかどうかを確認するために、各クリックとフィルタを処理します。

の代わりに、コールで修正されないで、ハンドラを適用するときに存在する.title divの親を見つけます。

関連する問題