我最近遇到了一个我必须使用的代码示例,我能够使用它,但我并不完全理解发生了什么,我不喜欢它.
这是代码的一部分:
.sortElements(function(a, b){
return $.text([a]) > $.text([b]) ?
inverse ? -1 : 1
: inverse ? 1 : -1;
}
Run Code Online (Sandbox Code Playgroud)
我知道这个函数决定哪个元素应该首先从a和b中排序,我知道inverse正在决定排序顺序,但我不知道$ .text([a])在做什么.是解析"a"作为像parseInt(a)和Date.parse(a)这样的文本吗?
我问谷歌,它不会告诉我任何东西,可能是因为它不喜欢搜索符号和点,或者可能是因为我不知道如何使用谷歌搜索符号和点.我也查看了jQuery网站,我发现的是$(selector).text()/ $(selector).text(newText)函数.
这是jsFiddle我基于我的代码:http://jsfiddle.net/gFzCk/
jQuery.text为该方法的实现做了繁重的工作.text()- 它似乎是一个具有核心功能的未记录的函数.text(),但缺少一些jQuery抛光.
它是从Sizzle"导入"出现的Sizzle.getText.
检查jQuery源将显示$(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 );
},
Run Code Online (Sandbox Code Playgroud)
它是一个未记录的函数(这意味着进一步的jQuery修订可能会随意丢弃它,而不通知您).你会发现它的定义如下:
jQuery.text = Sizzle.getText;
Run Code Online (Sandbox Code Playgroud)
Sizzle.getText反过来,被记录为"用于检索DOM节点数组的文本值的实用程序函数".看到这Sizzle.getText是一个记录的功能,我建议使用它而不是jQuery简写,因为我不希望jQuery很快就放弃Sizzle.
然后,该函数是产生DOM节点的文本内容的代码片段.您的排序方法是按照文本内容的字母顺序对DOM节点进行排序.我不知道为什么作者决定得到一个只包含一个元素([a])的数组的文本,而不是立即传递元素(a),这同样可以正常工作.
| 归档时间: |
|
| 查看次数: |
461 次 |
| 最近记录: |