自己用原生js写jquery能够达到寻找节点,调用方法的效果。
2023-12-26 12:11:59
实现目标: 1. 通过id,类,元素 寻找节点 $("#box") $(".box") $("div") 2. 进阶 可以通过寻找的节点 调用 .html() .css() 方法
一、方法一
1、通过id,类,元素 寻找节点
? ? ? ? eg: $("#box") $(".box") $("div")
function $(a){
var char = a.slice(0,1);
var b = a.slice(1);
switch (char){
case '#':
return document.getElementById(b);
break;
case '.':
return document.getElementsByClassName(b);
break;
default:
return document.getElementsByTagName(a);
break;
}
}
? ? ? ? 寻找节点:
console.dir("获取id为box的")
console.dir($("#box"))
console.dir("获取所有p标签")
console.dir($("span"))
console.dir("获取所有class为list的dom")
console.dir($(".list"))
2. 进阶 可以通过寻找的节点 调用 .html() .css() 方法
// css
HTMLElement.prototype.css = function(k,v){
k == 'cssText' ? this.style[k]+=v : this.style[k]= v ;
// 返回原型是为了可以实现链式操做
return this
}
// html
HTMLElement.prototype.html = function(a){
return (a == undefined) ? this.innerHTML : this.innerHTML = a ;
}
调用.html和.css方法:
$('.light')[0].css('cssText',"height:40px;width:40px;") $("p")[2].css("color","red").html(`<span>aaaaa</span>`) $('.a')[0].html('222222')
二、方法二: 利用构造函数方法的做法
????????在js中,任何用new关键字来调用的函数,都叫做构造函数。
????????使用对象字面量创建一系列同一类型的对象时,这些对象可能具有一些相似的特征(属性)和行为(行为),降低代码冗余,提高代码复用率。
(function (){
function jQuery(selector){
return new Init(selector)
}
//构造函数
function Init(selector){
this.node="";//节点
if(/^#/.test(selector)){
this.node=document.getElementById(selector.substring(1));
}else if(/^\./.test(selector)){
this.node=document.getElementsByClassName(selector.substring(1))
}else if(/\d*/.test(selector)){
this.node=document.getElementsByTagName(selector)
}
}
// html
Init.prototype.html=function (str){
console.log("html方法")
}
// css
Init.prototype.css=function (attr,value){
console.log("css方法")
}
// ajax方法
jQuery.ajax=function (){
console.log("ajax方法")
}
jQuery.fn=jQuery.prototype=Init.prototype;
// 扩展方法
jQuery.extend=function (obj){
for(let key in obj){
jQuery[key]=obj[key];
}
}
// 创建一个接口
window.jQuery=window.$=jQuery
})()
在页面上调用
console.log($("div"))
$("#div").html("喝喝喝")
jQuery("#box")
$("div").css()
$.ajax()
$.extend({
each:function (){
console.log("each")
},
newFn:function (){
console.log("newFn")
}
})
$.each();
$.newFn();
文章来源:https://blog.csdn.net/m0_49014420/article/details/135194385
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!