如何以有效的方式向HTML元素添加属性?

Cli*_*ote 2 html javascript jquery

我希望能够向HTML元素添加属性,以便能够识别其引用的内容.

例如,如果我有一个名称列表和每个名称旁边的复选框,如下所示:

<div id="users">
 Bob smith <input type=checkbox />
</div>
Run Code Online (Sandbox Code Playgroud)

当单击一个复选框并调用它的事件处理函数时,我希望能够识别选择/取消选择哪个用户.

理想情况下,我正在寻找这样的东西:

<input type=checkbox data-userId = "xxx" />
Run Code Online (Sandbox Code Playgroud)

然后点击它:

function handleClick()
{
  var userId = $(this).attr('data-userId');
}
Run Code Online (Sandbox Code Playgroud)

但是,我希望以不会破坏我的HTML验证的方式执行此操作,并且仍然是有效的HTML并且可以在所有浏览器中使用.

有什么建议?

Adi*_*dil 6

数据属性由html5提供,是有效的属性.您可以通过jquery的数据方法访问数据属性

var userId = $(this).data('userId');
Run Code Online (Sandbox Code Playgroud)


Ada*_*kis 5

将数据属性添加到dom元素,然后使用它们进行读取

var userId = $(this).attr('data-userId');
Run Code Online (Sandbox Code Playgroud)

甚至

var userId = $(this).data('userId');
Run Code Online (Sandbox Code Playgroud)

这是执行此操作的正确方法,并且不会破坏任何HTML验证.

只要注意会有的jQuery在你的数据-属性进行某些操作的情况下,如所描述这里.为了简单起见,请考虑更改data-userIddata-userid