摘要:但它操作的便利性無出其右。我用寫了一個基于簡化版的,僅做個學習記錄。包含基礎操作,支持鏈式操作,僅供日常使用。功能基于基本選擇器構造,包括基于原生構造,將原生對象轉化為對象。為支持批量操作,構造器應包含復數的。
原文地址:Bougie的博客
jQuery作為曾經Web前端的必備利器,隨著MVVM框架的興起,如今已稍顯沒落。但它操作DOM的便利性無出其右。我用ES6寫了一個基于class簡化版的jQuery,僅做個ES6學習記錄。包含基礎DOM操作,支持鏈式操作,僅供日常使用。當然,它不支持IE。
構造一個tinyJquery對象。功能:基于基本選擇器構造,包括id、class、tagName;基于原生DOM構造,將原生DOM對象轉化為tinyJquery對象。為支持批量操作,tinyJquery構造器應包含復數的DOM。
class tinyJquery { constructor(name) { if (typeof name == "string") { // 選擇器 this.dom = document.querySelectorAll(name) } else if (name.constructor.name == "NodeList"){ // 鏈式 this.dom = name } else { // 原生DOM轉tinyJquery this.dom = [name] } } }
使用$函數構建tinyJquery對象
function $(name) { return new tinyJquery(name) }方法(后續會漸漸完善) event操作
class tinyJquery { constructor(name) { if (typeof name == "string") { // 選擇器 this.dom = document.querySelectorAll(name) } else if (name.constructor.name == "NodeList"){ // 鏈式 this.dom = name } else { // 原生DOM轉tinyJquery this.dom = [name] } } // addEventListener on(eventName, fn, bubble = false) { this.dom.forEach(i => { i.addEventListener(eventName, fn, !bubble) }) return new this.constructor(this.dom) } // removeEventListener un(eventName, fn, bubble = false) { this.dom.forEach(i => { i.removeEventListener(eventName, fn, !bubble) }) return new this.constructor(this.dom) } }class操作
class tinyJquery { constructor(name) { if (typeof name == "string") { // 選擇器 this.dom = document.querySelectorAll(name) } else if (name.constructor.name == "NodeList"){ // 鏈式 this.dom = name } else { // 原生DOM轉tinyJquery this.dom = [name] } } // addClass ac(className) { this.dom.forEach(i => { i.classList.add(className) }) return new this.constructor(this.dom) } // removeClass rc(className) { this.dom.forEach(i => { i.classList.remove(className) }) return new this.constructor(this.dom) } // toggleClass tc(className) { this.dom.forEach(i => { i.classList.toggle(className) }) return new this.constructor(this.dom) } // containClass cc(className) { let flag = false this.dom.forEach(i => { if(i.classList.contains(className)) flag = true }) return flag } }屬性操作
class tinyJquery { constructor(name) { if (typeof name == "string") { // 選擇器 this.dom = document.querySelectorAll(name) } else if (name.constructor.name == "NodeList"){ // 鏈式 this.dom = name } else { // 原生DOM轉tinyJquery this.dom = [name] } } // set inline style css(obj) { this.dom.forEach(v => { Object.keys(obj).forEach(i => { v.style[i] = obj[i] }) }) return new this.constructor(this.dom) } // get or set attribute attr(key, val) { if(key && !val) { return this.dom[0].getAttribute(key) } else { this.dom.forEach(i => { i.setAttribute(key, val) }) return new this.constructor(this.dom) } } }內容操作
class tinyJquery { constructor(name) { if (typeof name == "string") { // 選擇器 this.dom = document.querySelectorAll(name) } else if (name.constructor.name == "NodeList"){ // 鏈式 this.dom = name } else { // 原生DOM轉tinyJquery this.dom = [name] } } // get or set input value val(val) { if(val) { this.dom[0].value = val return new this.constructor(this.dom) } else { return this.dom[0].value } } // get or set dom innerHtml html(val) { if(val) { this.dom.forEach(i => { i.innerHTML = val }) return new this.constructor(this.dom) } else { return this.dom[0].innerHTML } } }表單操作
class tinyJquery { constructor(name) { if (typeof name == "string") { // 選擇器 this.dom = document.querySelectorAll(name) } else if (name.constructor.name == "NodeList"){ // 鏈式 this.dom = name } else { // 原生DOM轉tinyJquery this.dom = [name] } } // get JSONData serializeObject() { let dom = this.dom[0], obj = {} dom.querySelectorAll("input, textarea").forEach(i => { obj[i.getAttribute("name")] = i.value }) return obj } // get FormData serializeForm() { let dom = this.dom[0], form = new FormData() dom.querySelectorAll("input, textarea").forEach(i => { form.append(i.getAttribute("name"), i.value) }) return form } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/52154.html
摘要:但它操作的便利性無出其右。我用寫了一個基于簡化版的,僅做個學習記錄。包含基礎操作,支持鏈式操作,僅供日常使用。功能基于基本選擇器構造,包括基于原生構造,將原生對象轉化為對象。為支持批量操作,構造器應包含復數的。 原文地址:Bougie的博客showImg(https://segmentfault.com/img/bV71uK?w=500&h=260);jQuery作為曾經Web前端的必...
摘要:但它操作的便利性無出其右。我用寫了一個基于簡化版的,包含基礎操作,支持鏈式操作,僅供日常使用。功能基于基本選擇器構造,包括基于原生構造,將原生對象轉化為對象。為支持批量操作,構造器應包含復數的。 原文地址:Bougie的博客 jQuery作為曾經Web前端的必備利器,隨著MVVM框架的興起,如今已稍顯沒落。但它操作DOM的便利性無出其右。我用ES6寫了一個基于class簡化版的jQue...
摘要:但它操作的便利性無出其右。我用寫了一個基于簡化版的,包含基礎操作,支持鏈式操作,僅供日常使用。功能基于基本選擇器構造,包括基于原生構造,將原生對象轉化為對象。為支持批量操作,構造器應包含復數的。 原文地址:Bougie的博客 jQuery作為曾經Web前端的必備利器,隨著MVVM框架的興起,如今已稍顯沒落。但它操作DOM的便利性無出其右。我用ES6寫了一個基于class簡化版的jQue...
摘要:但它操作的便利性無出其右。我用寫了一個基于簡化版的,包含基礎操作,支持鏈式操作,僅供日常使用。功能基于基本選擇器構造,包括基于原生構造,將原生對象轉化為對象。為支持批量操作,構造器應包含復數的。 原文地址:Bougie的博客 jQuery作為曾經Web前端的必備利器,隨著MVVM框架的興起,如今已稍顯沒落。但它操作DOM的便利性無出其右。我用ES6寫了一個基于class簡化版的jQue...
摘要:我對很有興趣,但是我發現想寫不容易。于是我馬上動手,有了這個,本意是自己用,現在也推薦給大家,也希望大家積極指出不足,提出建議,當然如果有更好的方案,也可以推薦給我。特點使用了,這樣可以用來書寫代碼。 我對 react 很有興趣,但是我發現想寫 react 不容易。 我需要在開始寫代碼之前做很多準備工作,我需要編譯jsx文件,引入react等等,而最新的react示例,有鼓勵ES6來書...
閱讀 1349·2021-09-28 09:43
閱讀 4115·2021-09-04 16:41
閱讀 1917·2019-08-30 15:44
閱讀 3727·2019-08-30 15:43
閱讀 774·2019-08-30 14:21
閱讀 2037·2019-08-30 11:00
閱讀 3318·2019-08-29 16:20
閱讀 1923·2019-08-29 14:21