我在一些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中这样做,尽管这不重要)
答案 0 :(得分:0)
在我写这篇文章时,我找到了一个侥幸的机会。在评论者底部的以下链接中&#34; davids&#34;:
Event not get triggered after replacing with JQuery replaceWith()?
他陈述如下:
尝试像这样绑定事件:
> $(document).on('click', '#search-main a', function(ev){
> // your code });