javascript - 断言所有复选框都被选中

标签 javascript jquery angularjs jasmine

我有 5 个具有相同名称属性 relative-view 的复选框。

我想断言所有这些都已检查。我可以这样做来检查第一个和最后一个

expect(element.find('input[name="relative-view"]').first().prop("checked")).toBe(true);
expect(element.find('input[name="relative-view"]').last().prop("checked")).toBe(true);

但我不知道如何检查它们。我已经尝试了以下但我得到一个错误说 undefined is not a function

expect(element.find('input[name="relative-view"]')[0].prop("checked")).toBe(true);
expect(element.find('input[name="relative-view"]')[1].prop("checked")).toBe(true);
expect(element.find('input[name="relative-view"]')[2].prop("checked")).toBe(true);
expect(element.find('input[name="relative-view"]')[3].prop("checked")).toBe(true);
expect(element.find('input[name="relative-view"]')[4].prop("checked")).toBe(true);

我该怎么做?

最佳答案

[n] 表示法返回没有 .prop() 的 DOM 元素——这就是 jQuery API。使用 .eq():

var boxes = element.find('input[name="relative-view"]');

expect(boxes.eq(0).prop("checked")).toBe(true);
expect(boxes.eq(1).prop("checked")).toBe(true);
expect(boxes.eq(2).prop("checked")).toBe(true);
expect(boxes.eq(3).prop("checked")).toBe(true);
expect(boxes.eq(4).prop("checked")).toBe(true);

另一种方法是使用标准的 .checked 属性:

var boxes = element.find('input[name="relative-view"]').get();

expect(boxes[0].checked).toBe(true);
expect(boxes[1].checked).toBe(true);
expect(boxes[2].checked).toBe(true);
expect(boxes[3].checked).toBe(true);
expect(boxes[4].checked).toBe(true);

另外,尝试遍历 jQuery 集合:

$('input[name="relative-view"]', element).each(function () {
    expect(this.checked).toBe(true);
});

关于javascript - 断言所有复选框都被选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24105534/

相关文章:

javascript - JQuery 表单验证无法正常工作需要修复吗?

javascript - 为动态元素添加点击事件

javascript - 用户界面路由器 : passing Parameters into ui-view

angularjs - 是否存在 ng-model 和输入类型电子邮件错误?

javascript - 转换时间 00 :30:20 format to string

javascript - 如何设置箭头键按顺序浏览 <img> 标签?

java - 如何根据行表(数据库)检查复选框?

javascript - 如何选择另一个元素内的一个元素?

javascript - 如何将数组的字符串表示形式转换回数组?

javascript - 如何在页面渲染之前从服务器读取 Javascript 对象