27行js代码模拟jQuery的元素选择以及方法链式调用

模拟jQuery的实现主要分为2个部分,第一是元素选择器,第二是操作方法。

一:元素选择器

如:

$("#div1")

这是选择id为div1的元素,这是jQuery的选择器,如果使用原生js的方法就是:

document.getElementById("div1");

很明显使用jQuery的方法方便多了。不难想象,实现jQuery选择器的原理大致如下:

<div id="div1"></div>
function getElement(element) {
    let id = element.replace("#", "");
	let el = document.getElementById(id);
}

getElement("#div1");

这样很容易实现了id为div1的元素的选择,其它class或者元素的选择方法类似,不过需要注意返回的数组处理,以及参数的数据类型判断,这里作为例子没有加上太多严谨的逻辑处理。

二:操作方法

在前面的文章已经说过jQuery方法链式调用的原理,这里就不再重复,直接点击链接查看即可。

三:完整实例

主要是使用了立即执行函数以及原型方法来实现

<div id="div1"></div>
(function () {
	function jQuery(element) {
		jQuery.prototype.getElement(element);
		return jQuery.prototype;
	}

	jQuery.prototype = {
		el:{},
		getElement: function(element) {
			let id = element.replace("#", "");
			this.el = document.getElementById(id);
			return this;
		},
		width: function(width) {
			this.el.style.width = width;
			return this;
		},
		height: function(height) {
			this.el.style.height = height;
			return this;
		},
		border: function(style) {
			this.el.style.border = style;
			return this;
		}
	}
	this.jQuery = this.$ = jQuery;
})()
$("#div1").width("100px").height("100px").border("1px solid red");

立即执行函数的好处是:方法执行完之后,里面的变量方法会被销毁,但是里面还用到了闭包原理,将立即执行函数的方法(jQuery)赋值给了全局对象,作为全局对象的一个属性。

该实例只针对id元素进行了简单实现,后面有时间把其它也写完整,以及业务逻辑完善。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值