jQuery - text() method?

jQuery - text() method?

本文关键字:method text jQuery      更新时间:2023-09-26

作为jquery和javascript的新手,我似乎无法理解.text()方法是如何工作的。我通读了jQuery文档,但仍然无法弄清楚。

for (var i=0; i < arrayLength; i++){
        var currentElement = $(".artist")[i];
        var currentArtist = currentElement.text;
        console.log(currentElement);
        console.log(currentArtist);
    }

currentArtist 在控制台中返回"undefined"。它仅在 $(".artist") 上工作正常,但当我使用 [i] 或任何其他其他内容时则不然。我在这里错过了什么?我还能如何在选择器中获取文本值?

通过使用 jQuery 对象上的[]运算符,您可以访问 jQuery 找到的原始元素节点。这个原始元素不再有jQuery方法,也没有text属性。

如果要从 jQuery 对象中获取单个元素并保留 jQuery 包装器,请使用eq方法。

var artistElement = $(".artist").eq(i);
artistElement.text(); // gets the text content of the element

您发布的代码也不是很优化。例如,每次循环迭代时,您都会一遍又一遍地搜索文档中具有类 artist 的元素。最好在执行循环之前将该搜索结果缓存在变量中。如果循环遍历所有.artist元素,你可以使用 jQuery 的 each 方法。

$(".artist").each(function () {
    var artist = $(this); // this poits to the raw element thus wrapping into jQuery object
    console.log(artist.text());
});
var currentArtist = currentElement.text;

应该是:

var currentArtist = currentElement.text();

你应该使用 each():

$(".artist").each(function(i,val){
    var currentArtist = $(val).text();
    console.log(val);
    console.log(currentArtist);
});

$(".artist")生成一个 jQuery 对象,该对象可能如下所示:

[div,div,div

,div, prevObject: jQuery.fn.jQuery.init, context: document, selector: ".artist"...]

所以$(".artist")[i]的结果是HTMLElement,没有text的方法,这就是为什么你会得到undefined

text() 也是一个函数,后面可以跟 ()

但是如果你想保持 for 循环,你可以这样做

for (var i=0; i < arrayLength; i++){
    var currentElement = $(".artist")[i];
    var currentArtist = $(currentElement).text();
    console.log(currentElement);
    console.log(currentArtist);
}

.text()显示用户可见的 HTML 元素或一组 HTML 元素的文本。