我有 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/