2012-03-12 7 views
9

class="tags"のdivがあり、定義済みのハイパーリンクが1つあります。

<div class="tags"> 
    <a href="#">myLink</a> 
</div> 

ユーザーがクリックするとそのハイパーリンクを削除する機能があります。

$('.tags a').click(function() { 
    $(this).remove(); 
    return false; 
}); 

これは、定義済みのハイパーリンクで機能します。私はこれらに呼び出されません(クリックで)ハイパーリンクを削除するには、別の(ページがロードされた後)のjQueryの助けを借りて、リンク

$('.tags').append('<a href="#">newLink</a>'); 

機能を追加した場合 は、リンクを追加しました。これを解決するには?

答えて

4

あなたはライブ機能を使用する必要があります。

$(".tags a").live("click", function() { 
    // ... 
}); 

あなたが最初のロード後にリンクを追加しているので、標準のクリックイベントは、動的な追加リンクにバインドされることはありません。

+19

** ** ['live()'](http://api.jquery.com/live)は1.7以降償却されています。これからは['on()'](http://api.jquery.com/on)を使うことをお勧めします。翻訳された呼び出しは '$(document).on( 'click'、 '.tags a'、function(){/ * foo * /});' – Matt

+0

ありがとう。私のすべてのクリック/それに類する行為に本当に必要なのか、それとも本当に必要なときだけ使うべきなのでしょうか? – svenkapudija

+1

パフォーマンスについては、この回答をご覧ください: http://stackoverflow.com/questions/6047193/liveclick-and-performance 私は個人的にクリックイベントを使用し、実際にはライブイベントを使用することを好む動的な追加要素があることは明らかです。 – kufi

0

あなたのクリックイベントは、現在のdomエレメントにのみ適用され、将来のエレメントには適用されません。このイベントをすべてのエレメントに追加するには、jqueryでライブイベントを使用する必要があります。 http://jsfiddle.net/6cGvt/

+5

**注** ['live()'](http://api.jquery.com/live)は1.7以降償却されています。これからは['on()'](http://api.jquery.com/on)を使うことをお勧めします。 '$(document).on( 'click'、 '.tags a'、function(){/ * foo * /});' – Matt

+0

あなたはjqueryの最新バージョンを入手しています。 ONメソッドを使用する – sandeep

関連する問題