如何确定我是否使用document.querySelector选择多个元素或单个元素

时间:2013-07-16 10:10:14

标签: javascript dom jquery-selectors selectors-api

我正在编写一个函数$(类似于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 );
    }
}

我们如何减少此代码?

1 个答案:

答案 0 :(得分: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;
}

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