我有这个标记。
<form action='xxx.php' method='post'>
<table>
<tr>
<th>Branch Id</th>
<td><input id="branchId" type="text" size="15%" name="branchId"></input></td>
<th>Branch Name</th>
<td colspan="3"><input id="branchName" type="text" size="75%" name="branchName"></input></td>
<td>
<div id="button">
<input type="button" id="btnAdd" value="Add" name="submit"/>
</div>
</td>
</table>
</form>
<!------- Something here--------------->
<table class="divTable" id="exisBranch">
<tr><th id="thBranchId">Branch Id</th>
<th id="thBranchName">Branch Name</th>
<th class="btn" id="tcEdit">Edit</th>
<th class="btn" id="tcDelete">Delete</th>
</tr>
</table>
基本上发生的是我填充通过 AJAX 检索到的第二个表记录。每行都有一个“branchId”、“branchName”和两个“bt”类按钮。当我单击编辑按钮时,我需要将相应的 'branchId' 和 'branchName' 值插入到第一个表中的输入元素中,以便我可以编辑它们,然后当我单击“btnAdd”时,我可以保存它们。
这是我拥有的 jQuery。
function fun(){
var branchId=$(this).closest("tr").find("td").eq(0).html();
$("#btnAdd").click(function () {
if($("#btnAdd").val()=='Save')
{
alert(branchId);
//ajax call
}
});
}
$(document).ready(function(){
$("#exisBranch").on('click','.bt',fun);
$("input[type='button']").click(function(e){
e.preventDefault();
});
});
当我第一次单击“btnAdd”时,一切正常。问题从第二次和连续单击此按钮开始。考虑动态填充的内容中有 6 行,每行的“branchId”是对应的行号。
当我第一次单击第二行的“编辑”按钮,然后单击“btnAdd”时,会弹出一个正确显示 2 的警报。
问题是,如果我继续单击第 6 行的“编辑”,然后单击“btnAdd”,我会收到两个警报。第一个显示 2,然后是 6。我只想要 6。
对于第三轮,它就像 2,6,以及接下来点击的内容。这让我的 AJAX 火了很多。次作为没有。点击次数。
这真是令人生气。我似乎无法弄清楚为什么。我是一个 jQuery 新手,所以如果这是基本的东西并且我搞砸了,请多多包涵。请让我知道如何让它只用最新的值触发一次,而不是堆积在我的调用历史上?