2016-10-20 12 views
0

私はクラスnotification-link上のクリックイベントをリッスンしています:ジャバスクリプト、jQueryの:どのようにクリックイベントのために再聞く

$(document).ready(function(){ 
    $('.notifications-link').click(
     function(){ 
      $('.notifications-popup').addClass('show') 
     } 
    ) 
}); 

が正常に動作します。問題は、クラスnotification-linkを持つ新しいElementをDOMに追加すると、jQueryはそれをリッスンしません。追加されたElementをクリックしても何も起こりません。

どうすれば修正できますか?代わりに

$('.notifications-link').click(function(){...})

使用

$(document).on("click", ".notifications-link", function(){...});

ドキュメントにイベントを添付して、クリックが.notifications-「に着陸したかどうかを確認するためにチェックしているこの方法の

+0

。あなたはjqueryを使ってそうすることができます。 – Will

+0

これをjQueryでどうやって行うのですか?それは基本的に全体の質問です:-) – jonhue

+0

このリンクを介して読んでください。 http://api.jquery.com/on/ – Will

答えて

1

新たに追加されたすべての ".notifications-link"の内容が反映されます。

+0

awesome。働くありがとう。 :)。 – jonhue

+0

@klvler - 喜んで助けてください。詳細については、[このページ](https://learn.jquery.com/events/event-delegation/)をご覧ください。これで問題が解決した場合は、チェックマークを押してください。がんばろう。 –

+0

これは7分後から打っています - 実際にどのように物事が働くのかを深く説明している – jonhue

0

イベントの削除を使用する必要がありますJSを介して追加された要素に対してイベントが動作するようにします。どのように動作するかjQueryのイベントメソッドのように、クリックなどの詳細な説明については

$(document).ready(function() { 
    $('body').on('click', '.notifications-link', function (e) { 
     $('.notifications-popup').addClass('show'); 
    }); 
}); 

この記事をチェックしてください:あなたは、動的にこれらの新しく作成された要素にさえハンドラをアタッチ必要 http://elijahmanor.com/differences-between-jquery-bind-vs-live-vs-delegate-vs-on/

+0

に行く人がいます。 –

+0

には4つの方法が説明されていますが、そのうち3つは推奨されていません。 –

関連する問題