在前端的学习过程中,经常会使用到 jQuery 这个已经封装好的 JavaScript 库。
jQuery 库的简便性就不用多说了,能够极大的简化我们对 JavaScript 的操作。而在 jQuery 中,经常能够碰到一个 $,$是 jQuery 的核心选择器,由 $获取到需要修改的元素,然后对元素进行一系列方法操作。
那么就尝试写一个简单的 $方法来模拟 jQuery 的 $,来个狸猫换太子试试看吧
First
可以编写一个 js 文件,使用 export 来导出定义的 $方法
const $ = function (val) { }
export default $
复制代码
Second
$是一个选择器方法,所以需要传入的内容就是 class 和 id 或者元素等等 css 标识了。
这样可以根据传入的内容获取第一个字符进行判断(这里只考虑了 class、id、元素选择器,并且是最简单的选择,没有考虑到后代元素之类的)
const $ = function (val) { if (!val) return ; let type = val.slice(0, 1) let name = val.slice(1, val.length) let doms if (type == '.') { //判断是否是class doms = document.getElementsByClassName(name); } else if (type == '#') { //判断是否是id doms = document.getElementById(name); } else { //判断是否是元素 doms = document.getElementsByTagName(val) } return doms;}
复制代码
这样获取到的 doms 就是需要选择的元素了,可以打印一下 doms 看看,写一句 console.log(doms)。
准备一个页面,使用 import $ from 'js 文件位置'来将 $方法引入页面当中.
<template> <div id="testEnCap"> <div class="ullist"></div> <div class="ullist"></div> <div class="ullist"></div> <div id="open"></div> </div></template>
<script>import $ from '../js/enCap$'
export default { name:"testEnCap", components: {}, props: {}, data() { return { }; }, created() {}, mounted() { $(".ullist") },};</script><style scoped> .ullist { width: 200px; height: 20px; margin: 10px; background-color: aqua; }</style>
复制代码
效果:获取到了 class 相对应的元素
Third
现在元素已经拿到了,但是在 jQuery 的 $方法选中元素后往往还能对元素进行方法操作。此时就可以添加一些方法进入了
比如说添加改变元素颜色和形状的方法,以及绑定 on 方法
const $ = function (val) { ...... doms.changeColor = function(color) { //改变元素颜色方法 if (type == '.') { for (let i = 0; i < this.length; i++) { this[i].style.backgroundColor = color; } } else if (type == '#') { this.style.backgroundColor = color; } } doms.setSize = function(width, height) { //改变元素形状方法 if (type == '.') { for (let i = 0; i < this.length; i++) { this[i].style.width = width + 'px'; this[i].style.height = height + 'px'; } } else if (type == '#') { this.style.width = width + 'px'; this.style.height = height + 'px'; } } doms.on = function(fn, methods) { // on绑定方法,.on('click', function(){...}) this.addEventListener(fn, methods) } return doms;}
export default $
复制代码
这样在页面中就可以根据自己封装的 $轻松调用这些元素操纵方法了,哈哈哈
比如一下代码:
$(".ullist").changeColor('#ff0000')$("#open").setSize(400, 200)$("#open").changeColor('#00ff00')
复制代码
到此,一个简单的自己封装出来的 $就完成啦!
评论