我试图在jQuery元素集合上使用lodash的_.partition
,如下所示:
const $elements = $('<div class="outer"><div class="thisOne">thisOne</div><div>not thisOne</div><div>nor thisOne</div></div>').children();
// the above line ends up printing {0: <div class="thisOne">thisOne</div>, 1: <div>not thisOne</div>, 2:<div>nor thisOne</div>, length: 3} I may have mis-rememebered how it gets there.
// regardless it's a list of $jQuery elements
const [$matched, $unmatched] = _.partition($elements, element => element.text() === "thisOne");
$matched.forEach(element => expect(element).toHaveClass("thisOne"));
$unmatched.forEach(element => expect(element).not.toHaveClass("thisOne"));
但是我的错误出现在第二行,它表示element.text()
不是函数。
我已经看到了这个问题jQuery .each() function with ES6 arrow functions而且我认为它不像each
这样的jQuery数组函数,应该只对每个元素进行操作。将其更改为(index, element) => element.text() === "thisOne"
仍然无法正常工作,因此我无法认为这就是原因。
我做错了什么?
答案 0 :(得分:2)
问题是_.partition($elements, element => element.text() === "thisOne")
的结果是该元素 不 是一个jQuery元素,而是一个原生的dom元素。
要纠正此问题,您需要在{@ 1}}元素周围应用{<1}}:
$(...)
在运行jQuery函数之前,确保每个元素都能识别jQuery。