$ .text([“someText”]) - 这是什么意思?

时间:2013-02-05 09:24:21

标签: javascript jquery

我最近遇到了一个我必须使用的代码示例,我能够使用它,但我并不完全理解发生了什么,我不喜欢它。

以下是代码的一部分:

.sortElements(function(a, b){
    return $.text([a]) > $.text([b]) ? 
        inverse ? -1 : 1 
        : inverse ? 1 : -1;
}

我知道这个函数决定哪个元素应该首先从a和b中排序,我知道inverse正在决定排序顺序,但我不知道$ .text([a])正在做什么。它将“a”解析为类似parseInt(a)和Date.parse(a)的文本吗?

我问谷歌,它不会告诉我任何事情,可能是因为它不喜欢搜索符号和点,或者可能是因为我不知道如何使用谷歌搜索符号和点。我也查看了jQuery网站,我发现的只是$(selector).text()/ $(selector).text(newText)函数。

这是jsFiddle我基于我的代码:http://jsfiddle.net/gFzCk/

5 个答案:

答案 0 :(得分:9)

jQuery.text.text()方法的implementation做了繁重的工作 - 它似乎是一个未记录的函数,具有.text()的核心功能,但是缺少一些jQuery polish。

"imported" from Sizzle,显示为Sizzle.getText

答案 1 :(得分:7)

检查jQuery source会显示您熟悉的$(selector).text(),在内部使用$.text

jQuery.fn.extend({
    text: function( value ) {
        return jQuery.access( this, function( value ) {
            return value === undefined ?
                jQuery.text( this ) :
                this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
        }, null, value, arguments.length );
    },

这是一个未记录的函数(这意味着进一步的jQuery修订可能会随意丢弃它,而不会通知您)。你会发现它的定义:

jQuery.text = Sizzle.getText;
反过来,

Sizzle.getText被记录为“用于检索DOM节点数组的文本值的实用程序函数”。看作Sizzle.getText是一个记录的功能,我建议使用它而不是jQuery简写,因为我不认为jQuery会很快放弃Sizzle。

然后,此函数是生成DOM节点的文本内容的代码段。您的排序方法是按照文本内容的字母顺序对DOM节点进行排序。我不知道为什么作者决定获取只包含一个元素([a])的数组的文本,而不是立即传递元素(a),这同样可以正常工作。 / p>

答案 2 :(得分:2)

在查看你的jsfiddle之后,看来它是一个从元素中获取文本的函数,类似于.text()

console.log(a)已记录<td>28/02/2013</td>

虽然

console.log($.text[a])已记录28/02/2013

答案 3 :(得分:1)

如果上面的代码做了一些有用的事情(=根据jQuery文档没有指示它),那么它可能会在.text()a上调用b

我想知道为什么作者没有使用$(a).text(),因为应该做同样的事情。也许代码也可以工作,无论a是否是一个jquery包装的节点: - /

答案 4 :(得分:0)

首先,括号。如果a是一个元素,[a]是一个元素数组,所以对$.text(...)的调用将数组作为参数传递。

我找不到关于jQuery.text的任何文档,但仅针对jQuery.fn.text。但是,您可以看到jQuery.text的实现将数组作为参数和标量值处理。

在这种情况下,$.text([a])可能与$.text(a)相同。