我正在努力改进我主动更改Javascript / jQuery设备的编码方式。我简化代码的一件事是将元素集合存储在jQuery对象中,如下所示:
var links = $('a');
这不需要不断重新创建jQuery对象,从而节省了处理时间。然后我运行影响这些元素外观的代码:
links.css('color', '#ff0000');
问题是,我的脚本的其他部分创建了新的链接以添加到该集合,我依次想要改变。但是如果我尝试对该集合做任何事情,它当然只会影响原始集合:
links.css('color', '#ffff00');
所以我的问题是:有没有办法创建一个jQuery元素集合,当你向标记添加更多内容时会更改,重新定义集合?
答案 0 :(得分:0)
getElementsByTagName返回的htmlcollections和文档的getElementsByClassName函数不断更新dom中的任何更新。
var htmlcollection = document.getElementsByTagName('a);
console.log(htmlcollection.length); // returns 0;
$('body').append("<a/>");
console.log(htmlcollection.length); //returns 1;
每次都可以使用$(htmlcollection)。我认为它会更高效,因为你已经提供了jquery的元素。并且每次都不需要在dom上搜索这些元素。