我有动态生成的表,
<c:forEach var="user" items="${usermap}">
<tr>
<td>${user.getUserName()}</td>
<td>${user.getIsActive()}</td>
<td class="status">${user.getBadLoginAttempts()}</td>
<c:choose>
<c:when test="${user.getBadLoginAttempts()=='Active'}">
<td><a href="#" class="btn btn-sm btn-primary unlockBtn" id="togBtn_${user.getUserName()}" >Lock</a></td>
</c:when>
<c:otherwise>
<td><a href="#" class="btn btn-sm btn-primary unlockBtn" id="togBtn_${user.getUserName()}" >UnLock</a></td>
</c:otherwise>
</c:choose>
</tr>
</c:forEach>
我正在点击链接做一些数据库操作工作正常。所以脚本是,
$(document).ready(function(){
$(document).on('click','.unlockBtn',(function (e) {
//get the user id
var $this = $(this);
var userStatus=$(this).closest('tr').find('td:eq(2)').text();
if(userStatus=='Active'){
alert("Active in if");
alert(userStatus);
$.post('<%=request.getContextPath()%>/controller/UserLockController',{'userName':$(this).closest('tr').find('td:eq(0)').text()},
function(data)
{
$this.closest('tr').find('.status').html(data);
$this.closest('tr').find('td:eq(3)').replaceWith("<td><a href='#' class='btn btn-sm btn-primary unlockBtn' >Unlock</a></td>");
});
}
else{
alert(userStatus);
$.post('<%=request.getContextPath()%>/controller/UserUnlockController',{'userName':$(this).closest('tr').find('td:eq(0)').text()},
function(data)
{
$this.closest('tr').find('.status').html(data);
$this.closest('tr').find('td:eq(3)').replaceWith("<td><a href='#' class='btn btn-sm btn-primary unlockBtn' >Lock</a></td>");
});
}
}));
});
所以每个功能都很好。我面临的问题是我能够锁定或解锁一次的每一行。我一直想要它如何实现它。请帮帮我。
答案 0 :(得分:0)
试试这个:
$(document).on("click", ".generateTable tr", function () {
// Your code
});
Click
事件可以替换为您想要的任何jquery事件。
答案 1 :(得分:0)
事件委托工作正常。所以,我唯一能想到的是:
<td>
。 所以,我建议改变这一行:
$this.closest('tr').find('td:eq(3)').replaceWith("<td><a href='#' class='btn btn-sm btn-primary unlockBtn' >Unlock</a></td>");
和这一行:
$this.closest('tr').find('td:eq(3)').replaceWith("<td><a href='#' class='btn btn-sm btn-primary unlockBtn' >Lock</a></td>");
为:
$this.text("Unlock");
和
$this.text("Lock");
这种方式更具可读性。这是一个示例fiddle。