0

jQueryが愚かであると判断したか、単に何かが欠けているだけですが、次のコードを使用して追加された要素を削除しても機能しません:

$('#add-show').click(function() {
    if ( $('#fav-search').val() == '' ) {
        // do nothing
    }
    else {
        $('.fav-results').append('<code><a href="#"><span class="icon-remove"></span></a>' + $('#fav-search').val() + '</code>');
    }
});

$('.fav-results code').on('click', 'a', function() {
    $(this).parent().remove();
});

そして、興味のある人のための HTML:

<div class="input-append">
    <input class="span2" id="fav-search" type="text">
    <button class="btn" type="button" id="add-show"><span class="icon-plus"></span></button>
</div>
<div class="pull-right fav-results">
    <?php foreach($shows as $show): ?>
        <code><a href="#"><span class="icon-remove"></span></a><?php echo $show['showname'] ?></code>
    <?php endforeach ?>
</div>

データベース テーブルから取得した既存のタイトルは削除できますが、追加された要素は削除できません。

私はもともと .click ハンドラーを使用していましたが、ページの読み込み時にDOMに存在する要素に対してのみ機能することを読みました。同じ性質の以前の質問を読んだ後、.on の使用に変更しましたが、それでも動作は同じです。

4

2 に答える 2

0

動的に作成された要素にclickイベントを適用するには、要素<div>ではなく祖先に委譲する必要があります。<code>

$(".fav-results").on("click", "code a", function() {
    $(this).parent().remove();
});
于 2013-03-29T05:57:27.940 に答える
0

実行する前に、すべての要素のイベント ハンドラーを削除するremove()代わりに使用しています。detach()code

于 2013-03-29T06:01:46.997 に答える