当使用JQuery replaceWith()函数时,事件之后将不起作用?

时间:2017-12-06 02:42:14

标签: jquery asp.net ajax

我在一些html中有一个调用ajax请求的按钮,然后用.replaceWith()JQuery函数替换上面提到的html和按钮。在“替换”发生后,该按钮将不再起作用。事件代码与html完全分开,所以我不明白为什么它不会像我需要的那样多次执行该事件。

这是JQuery代码:

$(document).ready(function () {
    $("button.hit").click(function (e) {
        e.preventDefault();
        var thisPlayer = this.id;
        $.post('/home/GetHitHold/', { action: "hit", playerName: this.id },
            function (returnedData) {
                $('div[id~="' + thisPlayer + '"]').replaceWith(returnedData);
            }).fail(function () {
                addTableRow("error");
            });
    });
});

这是从ajax请求返回的html,它正在进行替换。

<div id="@Model.PlayerName" class="col-md-3" style="display: inline-block; margin: 10px 0px 10px 0px;">
    <div class="card border-warning" style="background-color:#1C5619">
        <div class="card-block">
            <h4 class="card-title text-center text-warning">Player: @Model.PlayerName</h4>
            <h1 class="card-text text-center text-lg-center text-warning">@Model.DisplayHand()</h1>
            <div>
                <button id="@Model.PlayerName" class="hit greenButtons btn btn-warning">Hit</button>
                <button id="@Model.PlayerName" class="hold greenButtons btn btn-warning">Hold</button>
            </div>
            <p class="card-text text-right">
                <small class="text-warning text-center text-warning" style="margin: 10px;">Hand Value: @Model.ParticipantsHighestHand()</small>
            </p>
        </div>
    </div>
</div>

所以我的目标是能够替换html,并且在替换的html中仍然有一个工作的“click”事件。

(我在ASP.NET Core MVC中这样做,尽管这不重要)

1 个答案:

答案 0 :(得分:0)

在我写这篇文章时,我找到了一个侥幸的机会。在评论者底部的以下链接中&#34; davids&#34;:

Event not get triggered after replacing with JQuery replaceWith()?

他陈述如下:

  

尝试像这样绑定事件:

> $(document).on('click', '#search-main a', function(ev){
>     // your code });