我最近遇到了一个我必须使用的代码示例,我能够使用它,但我并不完全理解发生了什么,我不喜欢它。
以下是代码的一部分:
.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/
答案 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)
相同。