以下是示例http://jsfiddle.net/7vH2q/7/
点击想要获取表格中的行数。后者将使用该数字执行另一个代码。
要测试我得到的内容,请使用alert
看到奇怪的行为。如果我第一次单击按钮,请参阅1个警报,再次单击,查看2个警报等。我希望每次点击只能看一次警报。
这是代码
<td id="1"><div style="width:30px; border:0px solid #F1F1F1;">
<input name="paid_used" type="button" value=""
onClick="javascript:ajax_post_one_row(); ">
</div></td>
这是jquery代码
function ajax_post_one_row(){
$("table tr").click(function(){
alert (this.rowIndex+1);
});
}
每次点击只需查看1个提醒需要做什么?实际上我只使用警报进行测试(在工作代码上我会评论警报)。
答案 0 :(得分:2)
这是事件处理程序中的事件处理程序,所以每次单击时,都会添加另一个事件处理程序,下次单击时会有两个,然后是三个等。
删除内联处理程序并坚持使用jQuery处理程序
<td id="1">
<div style="width:30px; border:0px solid #F1F1F1;">
<input name="paid_used" type="button" value="" />
</div>
</td>
JS
$("table tr").on('click', function(){
alert (this.rowIndex+1);
});
答案 1 :(得分:1)
.one()
附加一个处理程序,每个事件类型每个元素最多执行一次。
写:
$("table tr").one("click",function(){
alert (this.rowIndex+1);
});
答案 2 :(得分:1)
问题说明:
每次单击该按钮(即在附加的处理程序“ajax_post_one_row”中),您都会在“table tr”上单击一个新的处理程序。
<强>解决方案:强>
更简单的方法,只将一个处理程序附加到表中的所有按钮:
$(document).on("click", "table input[type=button]", function() {
alert($(this).closest("tr").attr("id"));
});
另一个建议:使用行ID,而不是行号。
我稍微修改了您的示例,现在它可以正常工作:http://jsfiddle.net/akhikhl/TVxA4/3/