任务记录:实现一点jQuery的API
2018-02-26
任务要求:
- 选择器功能:传入选择器或DOM对象,返回包装后的jQuery对象(伪数组)。
- .addClass()方法:用于为节点添加类。
- .setText()方法:用于设置节点内的文本。
实现过程
选择器
jQuery本身就是一个函数,它需要将传入的选择器或DOM对象包装成jQuery对象并返回。所以首先需要先声明一个变量 $nodes 来存放包装后的对象:
1 | const $nodes = { length: 0 } |
然后判断传入参数的类型:
1 | if (typeof node === 'string') { |
判断完毕后就根据参数的类型做相应的操作。这里为了保持输出结果的一致性,无论选择器选中一个还是多个节点,都统一使用伪数组来存储。
1 | if (typeof node === 'string') { |
最后返回这个$nodes变量就可以了。
1 | return $nodes |
.addClass() 和 .setText()
接下来需要为这个对象添加两个方法让它看起来有点用处。首先是.addClass()方法,这里直接在被返回的$nodes对象上面添加:
1 | $nodes.addClass = (className) => { |
这里为了保证$nodes中所有的节点都能被添加class,需要对$nodes遍历一下,再分别为每个节点添加class。.setText()也是同理:
1 | $nodes.setText = (text) => { |
用$代替jQuery
至此这个简单的jQuery的功能就已经完成了。最后还需要将jQuery函数绑定到全局变量以方便调用。然而jQuery这个名字还是稍微长了点,这时可以再将jQuery再赋值到全局的$变量上,这样看起来就方便多了。
1 | window.jQuery = jQuery |
OK,完成。