Javascript 如何获取所有HTML元素的id?

Javascript 如何获取所有HTML元素的id?,javascript,html,Javascript,Html,我正在使用java脚本动态添加HTML控件。例如,我的页面中有一个按钮。每当我单击该按钮时,它都会在UI页面中的HTML控件上创建。因此,我想为控件添加click事件。是否可以获取所有UI控件ID?$“[ID]”返回设置了ID的所有元素 但是要小心 在大型dom上,这将非常缓慢 $“[id]”返回设置了id的所有元素 但是要小心 在大型dom上,这将非常缓慢 解决问题的最好办法可能是使用 假设您引入了jQuery>=1.7,事情会很简单,只需在控件中添加一个自定义类,如control: $(do

我正在使用java脚本动态添加HTML控件。例如,我的页面中有一个按钮。每当我单击该按钮时,它都会在UI页面中的HTML控件上创建。因此,我想为控件添加click事件。是否可以获取所有UI控件ID?

$“[ID]”返回设置了ID的所有元素

但是要小心

在大型dom上,这将非常缓慢

$“[id]”返回设置了id的所有元素

但是要小心

在大型dom上,这将非常缓慢


解决问题的最好办法可能是使用

假设您引入了jQuery>=1.7,事情会很简单,只需在控件中添加一个自定义类,如control:

$(document).on(
    'click',
    '.control',
    function(e) {
        var control = e.target;
        // Work you handler
    }
);

解决问题的最好办法可能是使用

假设您引入了jQuery>=1.7,事情会很简单,只需在控件中添加一个自定义类,如control:

$(document).on(
    'click',
    '.control',
    function(e) {
        var control = e.target;
        // Work you handler
    }
);

我认为获取所有元素的ID不是一个好主意,但是:

var elements = document.querySelectorAll("[id]");
要获得更好的跨浏览器支持,我建议您使用jQuery:

$("[id]");
否则,您必须获取所有元素并按id进行筛选。类似于:

var allElements = document.getElementsByTagName("*");
var elements = [];

for (var i = 0, node; node = allElements[i++];)
    if (node.id) elements.push(node);

我认为获取所有元素的ID不是一个好主意,但是:

var elements = document.querySelectorAll("[id]");
要获得更好的跨浏览器支持,我建议您使用jQuery:

$("[id]");
否则,您必须获取所有元素并按id进行筛选。类似于:

var allElements = document.getElementsByTagName("*");
var elements = [];

for (var i = 0, node; node = allElements[i++];)
    if (node.id) elements.push(node);

你真的想要页面上所有元素的ID吗?为什么不在创建每个UI控件时将它们的ID保存在一个数组中?这将使这些id的检索速度更快。是的,我想为所有元素添加click事件,比如$element id;在这种情况下,最好使用委托。然后检查event.target。是否确实需要页面上所有元素的ID?为什么不在创建每个UI控件时将其ID保存在数组中?这将使这些id的检索速度更快。是的,我想为所有元素添加click事件,比如$element id;在这种情况下,最好使用委托。然后检查event.target。