我正在将Web应用程序从原型(prototype)移植到jquery,在其中我经常使用原型(prototype)Down()函数。 (选择给定元素的第一个 child )

浏览JQuery-api的方法之一是:

原型(prototype):$('abc')。down();
jQuery的:$('abc')。children()。first();

但是,由于此操作首先获取所有子级并应用过滤器,所以我怀疑此用例是否有效。

有什么更好的方法?

最佳答案

您可以扩展jQuery,并添加一个down()函数,如下所示:

(function($) {
  $.fn.down = function() {
    return $(this[0] && this[0].children && this[0].children[0]);
  };
})(jQuery);

这样,您无需更改代码中的任何内容。

您可以看到此实时jsFiddle example
您也可以在jsPerf中查看性能比较。
它表明速度比其他答案中给出的方法快(从40%降低到70%)。

编辑:
从实际的原型(prototype)实现改编的替代版本。 这甚至更快(降低了25%)
(function($) {
  $.fn.down = function() {
    var el = this[0] && this[0].firstChild;
    while (el && el.nodeType != 1)
      el = el.nextSibling;
    return $(el);
  };
})(jQuery);

10-07 19:42
查看更多