Javascript 处理具有相同ID的元素的单击的最佳方法

Javascript 处理具有相同ID的元素的单击的最佳方法,javascript,jquery,html,Javascript,Jquery,Html,我正在建立一个网站,允许用户从服务器上的文件夹下载文件 这些文件从数据库中提取,并存储在HTML表中。每行有一个下载按钮。我知道我不能把id='download'放进去 单击按钮时处理JavaScript函数的最佳方式是什么 我应该设置类似于download-214124 然后只需将(“下载-*”)作为jQuery?中的选择器,正如您所说的,您不能对所有元素使用公共ID,因为ID必须是唯一的 相反,您可以对所有元素使用公共类,然后使用data-*属性来存储id,如 <button clas

我正在建立一个网站,允许用户从服务器上的文件夹下载文件

这些文件从
数据库
中提取,并存储在
HTML表
中。每行有一个下载按钮。我知道我不能把
id='download'
放进去

单击按钮时处理JavaScript函数的最佳方式是什么

我应该设置类似于
download-214124


然后只需将
(“下载-*”)
作为
jQuery

中的选择器,正如您所说的,您不能对所有元素使用公共ID,因为ID必须是唯一的

相反,您可以对所有元素使用公共类,然后使用
data-*
属性来存储id,如

<button class="download" data-id="1235">Download</button>
注意:如果您处理的是动态元素,那么必须使用事件委托来注册处理程序,如

$(document).on('click', '.download', function() {
  var id = $(this).data('id');
  //do download code for id here
})

正如您所说,您不能对所有元素使用公共ID,因为ID必须是唯一的

相反,您可以对所有元素使用公共类,然后使用
data-*
属性来存储id,如

<button class="download" data-id="1235">Download</button>
注意:如果您处理的是动态元素,那么必须使用事件委托来注册处理程序,如

$(document).on('click', '.download', function() {
  var id = $(this).data('id');
  //do download code for id here
})

正如您所说,您不能对所有元素使用公共ID,因为ID必须是唯一的

相反,您可以对所有元素使用公共类,然后使用
data-*
属性来存储id,如

<button class="download" data-id="1235">Download</button>
注意:如果您处理的是动态元素,那么必须使用事件委托来注册处理程序,如

$(document).on('click', '.download', function() {
  var id = $(this).data('id');
  //do download code for id here
})

正如您所说,您不能对所有元素使用公共ID,因为ID必须是唯一的

相反,您可以对所有元素使用公共类,然后使用
data-*
属性来存储id,如

<button class="download" data-id="1235">Download</button>
注意:如果您处理的是动态元素,那么必须使用事件委托来注册处理程序,如

$(document).on('click', '.download', function() {
  var id = $(this).data('id');
  //do download code for id here
})

HTML5
提供了
数据属性
,允许您存储与
DOM
元素相关的数据。这使生活变得超级容易与
JavaScript
连接
jQuery
具有
data()
函数来访问元素的
数据属性

你可以像下面这样做

HTML

<table>
    <tr><td>
        <p>file with id 1</p>
        <button data-id="1">download</button>
     </td></tr>
    <tr><td>
        <p>file with id 2</p>
        <button data-id="2">download</button>
    </td></tr>
    <tr><td>
        <p>file with id 3</p>
        <button data-id="2">download</button>
     </td></tr>
</table>

这是一个解决方案。

HTML5
提供了
数据属性
,允许您存储与
DOM
元素相关的数据。这使生活变得超级容易与
JavaScript
连接
jQuery
具有
data()
函数来访问元素的
数据属性

你可以像下面这样做

HTML

<table>
    <tr><td>
        <p>file with id 1</p>
        <button data-id="1">download</button>
     </td></tr>
    <tr><td>
        <p>file with id 2</p>
        <button data-id="2">download</button>
    </td></tr>
    <tr><td>
        <p>file with id 3</p>
        <button data-id="2">download</button>
     </td></tr>
</table>

这是一个解决方案。

HTML5
提供了
数据属性
,允许您存储与
DOM
元素相关的数据。这使生活变得超级容易与
JavaScript
连接
jQuery
具有
data()
函数来访问元素的
数据属性

你可以像下面这样做

HTML

<table>
    <tr><td>
        <p>file with id 1</p>
        <button data-id="1">download</button>
     </td></tr>
    <tr><td>
        <p>file with id 2</p>
        <button data-id="2">download</button>
    </td></tr>
    <tr><td>
        <p>file with id 3</p>
        <button data-id="2">download</button>
     </td></tr>
</table>

这是一个解决方案。

HTML5
提供了
数据属性
,允许您存储与
DOM
元素相关的数据。这使生活变得超级容易与
JavaScript
连接
jQuery
具有
data()
函数来访问元素的
数据属性

你可以像下面这样做

HTML

<table>
    <tr><td>
        <p>file with id 1</p>
        <button data-id="1">download</button>
     </td></tr>
    <tr><td>
        <p>file with id 2</p>
        <button data-id="2">download</button>
    </td></tr>
    <tr><td>
        <p>file with id 3</p>
        <button data-id="2">download</button>
     </td></tr>
</table>

下面是解决这个问题的方法。

如果使用JavaScript构建HTML表,则可以在运行时附加事件处理程序,而不需要任何ID

一个很好的例子是,当您通过JavaScript在结果数组中循环来构建HTML结构时。在这种情况下,可以使用闭包来维护对与特定HTML元素对应的结果数据的引用,并在调用事件处理程序时使用该数据

在下面的示例中,附加到每个按钮的事件处理程序能够直接调用数组中相应对象的
属性;我们不需要向button元素添加任何东西(既不需要ID也不需要数据属性)来维护该引用

var-dataResults=[{title:“一”,值:1},{title:“二”,值:2},{title:“三”,值:3},{title:“四”,值:4}];
var output=document.getElementById(“输出”);
对于(var i=0,len=dataResults.length;i

如果使用JavaScript构建HTML表,则可以在运行时附加事件处理程序,而无需任何ID

一个很好的例子是,当您通过JavaScript在结果数组中循环来构建HTML结构时。在这种情况下,可以使用闭包来维护对与特定HTML元素对应的结果数据的引用,并在调用事件处理程序时使用该数据

在下面的示例中,附加到每个按钮的事件处理程序能够直接调用数组中相应对象的
属性;我们不需要向button元素添加任何东西(既不需要ID也不需要数据属性)来维护该引用<