我正在编写一个函数$
(类似于jQuery的$
之一),但使用非jQuery方法和帮助程序,使用纯DOM属性。
我一直坚持确定我是按给定的选择器选择多个元素还是只选择一个元素。
到目前为止,我已经写了这篇文章,我想知道是否有可能用更少的代码来编写它,并且可能只使用DOM中的一种方法:querySelector
或querySelectorAll
。
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 );
}
}
我们如何减少此代码?
答案 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行为不同