在jquery元素

时间:2017-08-09 16:26:54

标签: javascript jquery lodash

我试图在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"仍然无法正常工作,因此我无法认为这就是原因。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

问题是_.partition($elements, element => element.text() === "thisOne")的结果是该元素 是一个jQuery元素,而是一个原生的dom元素。

要纠正此问题,您需要在{@ 1}}元素周围应用{<1}}:

$(...)

在运行jQuery函数之前,确保每个元素都能识别jQuery。