我正在尝试使用类preference
循环遍历元素,并根据循环索引将其text属性设置为字符串。但是,在这种情况下,获取具有首选类的'nth'元素不起作用,我收到错误Uncaught TypeError: $(...)[i].text is not a function
这样做的正确方法是什么?
$(".email-notification-preference").load("templates/email-notification-preference.html", function (data) {
for (i = 0; i < numPreferences; i++) {
$('.preference')[i].text(preferences[i]);
}
});
答案 0 :(得分:2)
$('。preference')返回一个DomElement数组,它们没有方法.text()。
我建议使用
$('.preference')[i].innerText = preferences[i]
答案 1 :(得分:1)
问题出在括号语法中。 $('.preference')
返回一个jquery元素集合,但$('.preference')[i]
返回未包装在jquery中的纯DOM节点对象。因此,你有方法eq
,它在集合的指定索引处返回jQuery对象,如下所示:$('.preference').eq(i)
。
然而,这不是最好的方法,因为在每次迭代时,您都会查询价格昂贵的.preference
的DOM。更好地将结果缓存在变量中并使用.each
方法:
var items = $('.preference');
items.each(function(i){
$(this).text(preferences[i]); // or this.innerText = preferences[i]
});
答案 2 :(得分:0)
我会尝试更改
var domPreferences = $('.preference');
for (i = 0; i < domPreferences.length; i++) {
domPreferences[i].innerText = preferences[i];
}