Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Angular/JavaScript中以编程方式触发单击列表中的单个元素_Javascript_Angularjs_Unit Testing - Fatal编程技术网

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

在Angular/JavaScript中以编程方式触发单击列表中的单个元素,javascript,angularjs,unit-testing,Javascript,Angularjs,Unit Testing,我正在写一个测试,我想点击列表中的第二项,检查是否有变化 我有一个项目符号列表元素: <ul> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul> 这些都不管用。第一次尝试单击所有项目,第二次尝试抛出错误 你知道如何只触发点击第二项吗?triggerHandler只适用于jQuery(或内置jqLite)元素elemen

我正在写一个测试,我想点击列表中的第二项,检查是否有变化

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

<ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
</ul>
这些都不管用。第一次尝试单击所有项目,第二次尝试抛出错误


你知道如何只触发点击第二项吗?

triggerHandler
只适用于jQuery(或内置jqLite)元素
element.find
返回jQuery元素(
li
),但
li[1]
,而不是jQuery包装的元素。
您可以使用
element.find('li:eq(1)
(如果您使用jQuery)或
element.find('li').eq(1)
(使用内置jqLite)。

为什么不简单地用ng click将click处理程序绑定到第二个元素呢?我是。这是测试代码,我想在其中触发对单个元素的单击,以检查ng click中的代码是否按预期工作。
  • 项目2
  • 好的,我知道了,我错过了!这正是我想要的。然而,我发现正确的语法(在我的Jasmine/Karma测试中)是element.find('li').eq(1)。非常感谢:)是的,这是因为
    元素.find
    在jqLite中“仅限于按标记名查找”。更新了答案,并对此进行了澄清。
    var li = element.find('li');
    
    li.triggerHandler('click'); //Clicks all elements
    li[1].triggerHandler('click'); //Error: li[1].triggerHandler is not a function