Gee*_*Jan 5 jquery jquery-traversing
我正在将一个webapp从prototype移植到jquery,我常常使用原型Down()函数.(选择给定元素的第一个子元素)
浏览JQuery-api,其中一种方法是:
原型:$('abc').down(); jquery:$('abc').children().first();
但是,由于这首先取出所有孩子并且过滤了一个过滤器,我怀疑它对这个用例是有效的.
什么是更好的方式?
您可以扩展jQuery,并添加如下down()函数:
(function($) {
$.fn.down = function() {
return $(this[0] && this[0].children && this[0].children[0]);
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
这样您就不必更改代码中的任何内容.
你可以看到这个实时的jsFiddle示例.
您还可以在jsPerf中查看性能比较.
它表明这比其他答案中提出的方法更快(从40%到70%慢).
编辑:
改编自实际原型实现的替代版本.这甚至更快(减少25%)
(function($) {
$.fn.down = function() {
var el = this[0] && this[0].firstChild;
while (el && el.nodeType != 1)
el = el.nextSibling;
return $(el);
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4689 次 |
| 最近记录: |