0

新しい<li>ものをリストに追加してから削除しようとすると、新しく追加された機能をリストから削除できませんか?

http://jsfiddle.net/43nWM/

乾杯

4

7 に答える 7

2

あなたが試すことができます。

http://jsfiddle.net/43nWM/1/

    $(function(){
      $('#cblist a').live('click', function(){
        $(this).parent('li').remove();
        return false;
      });
    });
于 2012-08-03T11:22:08.880 に答える
0

ここでの秘密はイベントの委任です。を呼び出す.click(function() {...})か、そのイベントハンドラーが、コードの実行時に.on('click', function() {...})セレクターと一致した要素にのみ割り当てられる場合。後で追加される要素には影響しません。

ただし、イベント委任を使用して、すべての動的要素を含む静的要素にイベントハンドラーを割り当てることができます。これにより、動的セレクターに一致する要素がそのタイプのイベントをトリガーするたびにコールバック関数が実行されます。

$('#cblist').on('click', 'a', function() {
    $(this).parent('li').remove();
    return false;
});

詳細については、関数のドキュメントの「直接イベントと委任イベント」というタイトルのセクションを参照し.on()てください。

于 2012-08-03T11:19:47.347 に答える
0
$(function(){
     $('#cblist').on('click','a',function(){
         $(this).parent('li').remove();
         return false;
     });
});

このjsfiddleを表示

于 2012-08-03T11:19:57.907 に答える
0

別のオプションは、次のように on() 関数を使用することです: http://jsfiddle.net/43nWM/12/

正直なところ、私は実際には他の 2 つのソリューションを好みます。

編集: 代わりに on() を使用してください。私はもともと live() の使用を提案しました

于 2012-08-03T11:20:43.597 に答える
0

li動的タグに追加するには、このコードを追加する必要があります

$li = $('<li>'+name+'</li>');
$a = $('<a href="">remove</a>');
        $a.click(function(){
          $(this).parent('li').remove();
          return false;      
        });
$li.append($a);

私はjsfiddleのコードも更新しました

于 2012-08-03T11:23:53.137 に答える
0

ブラウザが JavaScript コードを読み取っているときに、動的に追加された li が DOM にないため、見つけられません。代わりに、ハンドラーを親に追加し、次のように a をリッスンします。

$('#cblist').on('click', 'a', function(){
    $(this).parent('li').remove();
    return false;
});

フィドル: http://jsfiddle.net/43nWM/3/

于 2012-08-03T11:18:15.570 に答える
0

クリックイベントを現在の「削除」リンクにのみバインドし、将来のリンクにはバインドしていません。これにはイベント委任を使用して、両方のベースをカバーします。変化する:

  $('#cblist a').click(function(){

  $('#cblist').on('click', 'a', function() {
于 2012-08-03T11:18:17.870 に答える