![](/img/trans.png)
[英]Why this click event doesn't work clicking a button in this JQuery script?
[英]jQuery: Clicking button doesn't trigger event
我试图根据单击的按钮更改表的行。 单击“第一次”时该行发生更改,但是此后该行的值保持不变。 此外,按钮更改后,事件列表器也会被删除。
HTML:
<% if(post.status === 1){ %>
<input type="button" class="btn btn-danger" value="Disapprove" id="disapproveBtn-<%= i %>">
<input type="button" class="btn btn-primary" value="Send to Moderation" id="moderateBtn-<%= i %>">
<% } %>
jQuery的:
$("[id|='disapproveBtn']").click(function (e) {
console.log("CLICKED");
var trIndex = $(this).closest('tr').index();
var tr = $(this).closest('tr');
var postId = $(this).closest('tr').find("#postId").text().trim();
$.post('/admin/disapprove/' + postId, (data) => {
console.log(tr);
console.log(data);
tr.html(`
<td>
${data.post.firstName}
</td>
<td>
${data.post.lastName}
</td>
<td>
${data.post.userId}
</td>
<td>
<div id="postId">
${data.post.id}
</div>
</td>
<td>
<a href="/profile/post/${data.post.id}">Here</a>
</td>
<td>
${data.post.status}
</td>
<td>
<input type="button" class="btn btn-success" value="Approve" id="approveBtn-${trIndex}">
<input type="button" value="Send to Moderation" class="btn btn-primary" id="moderateBtn-${trIndex}">
</td>
`)
});
});
由于声誉,我无法对此发表评论,好像您有一个动态ID
disapproveBtn-<%= i %>
您的事件监听器正在查看disapproveBtn,而不是每个人
<% if(post.status === 1){ %>
<input type="button" class="btn btn-danger disapproveButton" value="Disapprove" id="disapproveBtn-<%= i %>">
<input type="button" class="btn btn-primary" value="Send to Moderation" id="moderateBtn-<%= i %>">
然后将事件监听器更改为$(“。disapproveButton”)。click(function(e){
我想清楚您的期望:
disapprove
按钮 approve
按钮 approve
按钮,发生了一些事情 他们单击“ approve
按钮时没有任何反应的原因是,您的所有事件侦听器都是在页面首次加载时创建的 。 approve
按钮是在页面加载后创建的,因此它没有事件侦听器。
我建议您在页面加载时始终在每行中都有一个“批准”按钮,但只需使用CSS( display:none
)将其隐藏,直到单击了“ disapprove
按钮即可。
否则,您将需要在每个approve
按钮创建时设置一个事件侦听器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.