jquery - 使用 AJAX 交换的按钮会导致新按钮的侦听器被忽略
问题描述
我使用 AJAX 调用 PHP 脚本并用结果数据替换一些 HTML,以便用户可以确认数据。初始按钮是“获取数据”,然后我用 2 个新按钮“确认数据”和“重试”将其换掉(以防用户不想验证脚本结果。
被替换的 HTML 按钮:
<div class="btn-container" id="btn-container">
<button type="button" id="fetch_btn" value="fetch_it" class="btn-btn btn btn-dark border-light center-button mt-2">
<div class="btn-text">
Fetch Data
</div>
</button>
</div>
Ajax 工作得很好:
$("#new_case_form").submit(function(e){
e.preventDefault();
var county_name = $("#county_select").val();
var case_number = $("#case_num").val();
// console.log($("#county_select").val());
var the_url = "fetch_case.php?county="+county_name+"&case_number="+case_number;
var response = $.ajax({
url: the_url,
type: "GET",
dataType: "text",
success: function(data){
$("#case-confirm").html(data);
$("#btn-container").html("<button type=\"button\" name=\"confirm_btn\" id=\"confirm_btn\" value=\"confirm\" class=\"btn-btn btn btn-dark border-light center-button mt-2\"><div class=\"btn-text\" id=\"confirm_btn_text\">Confirm Case</div></button><button type=\"button\" name=\"try_again\" id=\"try_again_btn\" value=\"try again\" class=\"btn-btn btn btn-dark border-light center-button mt-2\"><div class=\"btn-text\" id=\"try_again_btn_text\">Try Again</div></button>");
}
});
});
以下是更易读格式的新 HTML:
<button type="button" name="confirm_btn" id="confirm_btn" value="confirm" class="btn-btn btn btn-dark border-light center-button mt-2">
<div class="btn-text" id="confirm_btn_text">
Confirm Case
</div>
</button>
<button type="button" name="try_again" id="try_again_btn" value="try again" class="btn-btn btn btn-dark border-light center-button mt-2">
<div class="btn-text" id="try_again_btn_text">
Try Again
</div>
</button>
这是我在单击“重试”按钮后尝试执行任何操作时使用的 jQuery:
$("#try_again_btn").click(function(e){
console.log('confirm btn clicked');
});
我也试过
$("#try_again_btn").on("click",function(e){
console.log('confirm btn clicked');
});
我还使用了#try_again_btn_text,因为我在其中嵌套了一个 HTML 标记,<button>
并且认为当单击文本时它不会触发父级的触发器,button
但这也不起作用。
解决方案
推荐阅读
- docker - 当 apk 添加失败时,如何在 gliderlabs/alpine Docker 映像中安装 Alpine Linux 软件包?
- android - 如何为 API 级别 < 23 的项目设置重力
- mysql - 需要帮助来定义查询,我试图从 3 个不同的表中获取数据
- android - 在 Flutter ListView 中只重建一行?
- mysql - 以特定方式汇总一列中的值
- c# - ASP.NET MVC 5“当 ModelState 无效时”
- javascript - 以下输出的原因
- jquery - 从多个值 JQuery 中查找单个数据属性值
- css - Wordpress - 自定义 Watson Assistant 插件
- docker - 无法通过使用 hyper-v 在 docker-machines 上运行的 ip 访问 docker swarm 集群