[英]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.