菜鸡
菜鸡
  • 发布:2017-01-14 20:00
  • 更新:2017-01-14 20:00
  • 阅读:3719

写querySelector/querySelectorAll写烦了?进来看看吧...

分类:MUI

首先,这个方法不考虑ie9以及同等浏览器以下的兼容问题.....
对了,安卓版本实在低的浏览器也不考虑~(像什么安卓2.3之类的......)
本菜鸡没ios设备,没办法知道兼容情况......

这是废话

讲真的,写querySelector/querySelectorAll写得我不知道多烦躁...
虽然hb或者sublime有文本提示功能...
但是代码量讲真的也是有点大的啊...
好了,废话说了这么多~
来点干的了吧~
先直接上代码...
各位大神献丑了....

document.find = function(selector){  
    return this.querySelector(selector);  
}  
document.findAll = function(selector){  
    return this.querySelectorAll(selector);  
}  
HTMLElement.prototype.find = function(selector){  
    return this.querySelector(selector);  
};  
HTMLElement.prototype.findAll = function(selector){  
    return this.querySelectorAll(selector);  
}

好了.献丑讲下那几个方法的说明吧~~

document.find和document.findAll

js里可以用点(.)来给对象添加方法/属性,没毛病吧~
function里的this指向的就是被添加方法/属性的那个对象~

HTMLElement.prototype.find和HTMLElement.prototype.findAll

HTMLElement是个啥?
我自己通俗的理解就是页面上的像body啊,div啊,p啊...之类的标签在js中的表达方式~
(讲得不对还请大神指正)
具体的点我看W3C的解释吧
prototype又是个啥?
它是js中所有对象都带有的一个属性(不过document和window就没,不知道为啥,还请大神指点),
这个属性可以向对象添加属性/方法
详细的prototype解释看这里
function里的内容见document.find和document.findAll
来点实际的应用吧~

DEMO

    这是部分html代码如下(默认已经把上述js代码保存到script.js中)  
<div class="wrap">  
        <p class="conetent">这是第一段文字</p>  
</div>  
<div class="wrap">  
        <p class="conetent">这是第二段文字</p>  
</div>  
<script src="./js/script.js"></script>
    这是部分js代码
var wrap = document.find('.wrap'),  
        //或者直接document.find('.content'),  
        //我这里写warp.find('.content')是因为有个现成的wrap  
        content = wrap.find('.content'),  
        allWrap = document.findAll('.wrap'),  
        allContent = document.findAll('.conetent');

输出结果

输出结果是啥??
输出结果自己试试吧~

3 关注 分享
5***@qq.com lhyh 1***@qq.com

要回复文章请先登录注册

zapoi

zapoi

鸡哥v5
2017-06-09 10:15
wclssdn

wclssdn

回复 菜鸡 :
噗。。。 理由强悍。。。
2017-02-10 21:08
菜鸡

菜鸡 (作者)

回复 wclssdn :
渣渣笔记本4G内存,用不了hb~打开就卡~
2017-01-20 13:09
lhyh

lhyh

鸡哥V5
2017-01-17 09:12
5***@qq.com

5***@qq.com

鸡哥 v5
2017-01-16 10:01
wclssdn

wclssdn

看来你没有get到hbuilder的精髓啊~~
菜单栏->工具->扩展代码块->自定义JS代码块

比如:
···
snippet "app.get" do |s|
s.trigger = "appget" #实际输入内容,下方为实际产出内容
s.expansion = "app.get('https://example.com/$1', {$2}, function(data) {
if (data.code == 0) {
$3
}else{
plus.nativeUI.toast(data.message);
}
}, function() {
plus.nativeUI.toast('网络不给力啊。。。');
});"
end
···
2017-01-15 02:00