0

我正在编写一个函数$(类似于 jQuery 的一个$),但使用非 jQuery 方法和助手,以及普通的 DOM 属性。

我一直在确定我是通过给定的选择器选择多个元素还是只选择一个元素。

到目前为止,我已经写了这个,我想知道是否有可能用更少的代码编写这个,也许只使用来自 DOM:querySelectorquerySelectorAll.

String.prototype.startsWith = function( offset ) {
    var _offset = 1;

    if( offset !== undefined ) {
        _offset = offset;
    }

    return this.substr(0, _offset);
}

function $( selector ) {
    if( selector.startsWith() == '#') {
        return document.querySelector( selector );
    } else {
        return document.querySelectorAll( selector );
    }
}

我们怎样才能减少这个代码?

4

1 回答 1

1
function (selector) {
    return document[selector[0] === '#' ? 
          'querySelector' : 
          'querySelectorAll'](selector)
}

或者你可以这样做:

function (selector) {
    var result = document.querySelectorAll(selector);
    if(result.length === 1)
        return result[0];
    return result;
}

编辑jquery 选择器总是返回像对象一样的数组,尽管其中有项目计数,所以您尝试做的与 jQuery 行为不同

于 2013-07-16T10:17:19.910 回答