我有以下代码,我选择所有以相同名称开头的匹配元素,不包括我不希望包含在组中的元素。
var myInputBoxes= $('input[id ^= "SubjectText"]').not('#SubjectTextNew');
for (i = 0 ; i < myInputBoxes.length; i++){
var SubjectId = myInputBoxes[i].id.replace('SubjectText', '');
var Subject = myInputBoxes[i].val();
}
这在firefox中给出了以下错误
TypeError:myInputBoxes [i] .val不是函数
为什么它会在val函数上失败?
答案 0 :(得分:34)
使用括号表示法访问jQuery对象会返回一个没有val()
函数的DOMElement。如果要在匹配的集合中按索引检索元素,则需要使用eq()
:
var Subject = myInputBoxes.eq(i).val();
或者,您可以保留DOMElement并使用value
属性:
var Subject = myInputBoxes[i].value;
答案 1 :(得分:1)
因为subjectBoxes[i]
不是jQuery对象,如果它是一个jQuery对象,那么你可以使用.eq()来获取传递索引处元素的jQuery包装器引用
var myInputBoxes = $('input[id ^= "SubjectText"]').not('#SubjectTextNew');
myInputBoxes.each(function (e, el) {
var SubjectId = this.id.replace('SubjectText', '');
var Subject = subjectBoxes.eq(i).val();
})