Jquery首先单击一个警报,再单击2个警报,依此类推。但每次点击只需要1个提醒

时间:2013-12-21 18:41:31

标签: jquery

以下是示例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个提醒需要做什么?实际上我只使用警报进行测试(在工作代码上我会评论警报)。

3 个答案:

答案 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);
});

FIDDLE

答案 1 :(得分:1)

.one()附加一个处理程序,每个事件类型每个元素最多执行一次。

写:

$("table tr").one("click",function(){
    alert (this.rowIndex+1);
});

DEMO here.

More info here.

答案 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/