使用jQuery

时间:2017-06-19 14:35:42

标签: jquery

我正在尝试使用类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]);
    }
});

3 个答案:

答案 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];
}