触发器以编程方式单击Angular / JavaScript中列表的单个元素

时间:2015-08-05 11:25:42

标签: javascript angularjs unit-testing

我正在编写一个测试,我想点击列表中的第二项并检查某些内容是否已更改。

我有一个项目符号列表元素:

<ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
</ul>

我尝试了以下(元素是包含整个列表的angular元素):

var li = element.find('li');

li.triggerHandler('click'); //Clicks all elements
li[1].triggerHandler('click'); //Error: li[1].triggerHandler is not a function

这些都不起作用。第一次尝试点击所有项目,第二次尝试抛出错误。

任何想法如何只触发点击第二项?

1 个答案:

答案 0 :(得分:4)

triggerHandler仅适用于jQuery(或内置jqLit​​e)元素。 element.find返回一个jQuery元素(li),但li[1] is a DOM node,而不是jQuery包装元素。 您可以使用element.find('li:eq(1)')(如果使用jQuery)或element.find('li').eq(1)(使用内置jqLit​​e)。