2

私はいくつかのHTMLを持っています:

<div class="post-container self">
    <a href="/user/Wiz">
        <img class="avatar" alt="Profile Picture" src="">
    </a>
    <div class="post-body">
        <div class="post" style="margin-left:0px;">
            <div class="post-timestamp" style="display:inline-block;float:right">
                <a href="/posts/80" style="color:#999">Oct 31</a>
            </div>
            <div class="post-functions dropdown displaynone" style="float:right;margin-right:5px;">
                <a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
                    <i class="icon-cog"> 
                    </i>
                </a>
                <ul class="dropdown-menu post-dropdown" role="menu" aria-labelledby="dLabel">
                    <a class="post-delete" href="javascript:void(0)"><i class="icon-trash"> </i>Delete</a>
                </ul>
            </div>
        </div>
    </div>
</div>

それで、私はいくつかのJqueryを持っています:

$('.posts-content').on('click', '.post-delete', function(e) {
                $('.post-dropdown').dropdown();
                if (confirm('Are you sure you want to delete this post?')) {
                    var $this = $(this);
                    $.ajax({
                        url: '/a/delete_post',
                        type: 'POST',
                        dataType: 'json',
                        data: {'p' : post_id},
                        success: function() {
                            //... 
                            return true;
                        }
                    });
                }
                return false;
            });

すべてが最初のクリックで完全に機能しますが、別の投稿に移動してクリックしようとすると.post-delete、イベントは発生せず、コンソールには何も表示されません。を使用しても機能$.click()しますが、要素を動的に作成する必要があります。$.on('click')2 回目のクリックが発生しないのはなぜですか?

4

2 に答える 2

1

私の推測では、使用するドロップダウン プラグインが DOM 構造を変更するということです。

$('.post-dropdown').dropdown();

ところで、

$this.parent().parent().parent().parent().parent()これは本当に悪い習慣です。代わりに
使用する必要があります。closest

于 2012-11-09T03:28:37.530 に答える
0

要素を動的に作成している場合は、次を試してください。

$(document).on('click', '.post-delete', function(e) { });
于 2012-11-09T03:27:50.493 に答える