假设我正在动态生成一些控件(使用 jQuery 的示例):
for (var c=0 ; c<100 ; c++) {
$(body).append('<input id="btn_'+c+'" type="button" value="Button #'+c+'" />');
}
而且我希望他们根据点击哪个按钮(鼠标悬停等)有不同的操作,附加处理程序的最佳做法是什么,以便它知道正在点击哪个按钮?我可以想到 3 种选择:
- 将相同的处理程序(通过 javascript)附加到所有按钮,并让处理程序解析元素 id 以确定单击哪个
- 在为控件生成 HTML 时添加处理程序内联(即有 onclick="do_something('+c+');")
- 为在处理程序参数中设置了按钮编号的每个元素附加不同的处理程序(例如,使用循环)
哪种方法更受欢迎,或者还有其他选择吗?
编辑:
抱歉,但我可能应该提到生成元素的数量是可变的,并且处理程序只需要按钮编号(即,每个按钮不是完全不同的处理程序函数)。一个简单的示例用例是您希望用户订购的通过 ajax 抓取的列表,在这种情况下,处理程序只需要列表的索引号。
对于具有不同处理程序的固定数量的元素,大卫的回答是有道理的。