JavaScript:将参数传递给 onclick 处理程序

标签 javascript jquery

我需要将额外的参数传递给 onclick 处理程序。我无法决定哪种方式“更好”:

编辑:
上下文:我有一张显示事件花名册的表格。每行都有一个“删除”按钮。将 recordId 传递给删除处理程序的更好方法是什么?

$('a.button').click(function() {
    var recordId = $(this).metadata().recordId;
    console.log(recordId);
});
...
<tr>...<a class='{recordId:1} button'>delete</a></tr>
<tr>...<a class='{recordId:2} button'>delete</a></tr>

function delete(recordId) {
    console.log(recordId);
}
...
<tr>....<a class='button' onclick='deleteRecord(1)'>Delete</a></tr>
<tr>....<a class='button' onclick='deleteRecord(2)'>Delete</a></tr>

每个选项的优缺点是什么?

注意:我将 a.button 用作自定义的 CSS 样式按钮,它表现为链接。

编辑:
如果您可以论证所提供替代方案的优势,我也将不胜感激替代解决方案。

最佳答案

将记录 id 存储为元素本身的属性,但我建议您使用同样向后兼容的 HTML5 数据属性,而不是使用以奇怪格式存储它的元数据插件。

一行看起来像:

<tr> .. <a data-id="1">delete</a> .. </tr>

在处理程序中,检索属性值并对其进行操作

function deleteRecord() {
    var rowId = $(this).attr('data-id');
    ...
}

它与使用元数据插件相当,但它不会重载class 属性。为此不需要额外的插件。它使用单个处理程序,就像元数据插件一样,适用于大型数据集。

出于同样的原因,内联 onclick 处理程序是错误的。每行创建一个新的处理程序。它降低了灵 active ,通常是一种不好的做法。

关于JavaScript:将参数传递给 onclick 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3480242/

相关文章:

javascript - 垂直居中在 Firefox 中不起作用

javascript - 使用正则表达式获取字符串和数字

JavaScript:单独声明和定义函数?

即使我没有要求,jQuery Mobile 也会将页面加载到 DOM 中

javascript - JQuery/JS 问题 : how can I change "x" everytime a bind is called?

javascript - 几种基础展示模态需要不同的背景

javascript - 无法恢复用户信息

javascript - 如何克隆 jQuery 库(按值复制)

javascript - div 与 onclick 在另一个 div 内点击也触发

javascript - 基本 jQuery : How to call a user defined function