Jquery 将HTML元素的集合存储在变量中以供以后使用

Jquery 将HTML元素的集合存储在变量中以供以后使用,jquery,Jquery,这是我遇到的一个jQuery问题,我必须始终使用我并不自豪的方法来解决 我正试图存储一组元素,以供以后评估。问题是每次我尝试访问并应用任何函数时,错误控制台都会报告它不是函数。我确信我对jQuery的工作原理有误解。尽管如此,我还是希望被指向正确的方向。以下是我正在使用的代码: var products = $('ul.products'); var productLists = [] $.each(products, function (i) { productLists[i] = p

这是我遇到的一个jQuery问题,我必须始终使用我并不自豪的方法来解决

我正试图存储一组元素,以供以后评估。问题是每次我尝试访问并应用任何函数时,错误控制台都会报告它不是函数。我确信我对jQuery的工作原理有误解。尽管如此,我还是希望被指向正确的方向。以下是我正在使用的代码:

var products = $('ul.products');
var productLists = []
$.each(products, function (i) {
    productLists[i] = products[i].children('li');
    console.log(productLists[i]);
});
下面是我得到的错误:

Uncaught TypeError: Property 'children' of object #<HTMLUListElement> is not a function
Uncaught TypeError:对象#的属性“children”不是函数

您正试图从HtmleElement调用jQuery方法。尝试将元素引用包装到新的jQuery对象中:

productLists[i] = $(products[i]).children('li');
$中。每个
,您都可以使用关键字
this
来引用当前正在处理的项目。因此,不必调用
产品[i]
,您也可以轻松地说
这个

$.each( products, function() {
  productsList.push( $(this).children("li") );
});
还请注意,在进行选择时,jQuery已经存储了对元素的引用集合:

var productList = $("ul.products li"); // All list items in ul.products
然后,您可以在以后根据自己的意愿操纵所有这些。如果您需要自己的副本,为了确保它们在以后需要篡改时仍然存在,您可以使用
.clone

var productList = $("ul.products li").clone();

您可以直接在jquery集合对象上使用each方法。因此,做同样事情的另一种方法可能是:

$('ul.products').each(function(){
  productsList.push( $(this).children("li") );
})

不过,作为选择,在处理jQuery集合时,我总是更喜欢这种方法。

难以置信。这是自动的。你帮我省去了以后很多麻烦事。非常感谢。@user1416503我的荣幸。如果你觉得这有帮助的话,请考虑对这个方案进行投票,同时也要考虑到答案的最新的补充。@乔纳森桑普森:OP还不能投票,只有6个代表。我给了你一个。另一个投票。OP也可以接受这个答案,对吗?(提示):)在琼斯基特、巴卢斯克、比利扎德之后。。。乔纳森·桑普森。除非我能在SO中使用
follow
功能+1无论如何