封装jQuery
来源:互联网 发布:js比较值 编辑:程序博客网 时间:2024/05/21 09:59
封装jQuery
完成以下操作
$xxx.addClass(‘c1’)
$xxx.removeClass(‘c1’)
$xxx.toggleClass(‘c3’)
$xxx.text()
$xxx.text(‘hello’)
$xxx.html()
$xxx.html(‘< b >world< /b >’)
代码如下:
//html<div class="xxx"></div>//js 方法调用var $xxx = $('.xxx')$xxx.on('click', function(){ console.log($xxx[0])})// $xxx.addClass('c1')// $xxx.removeClass('c1')// $xxx.toggleClass('c3')// $xxx.text()// $xxx.text('hello')// $xxx.html()// $xxx.html('<b>world</b>')// js 定义方法window.jQuery = function(selector){ var array = [] var elements = document.querySelectorAll(selector) for(var i=0; i < elements.length; i++){ array.push(elements[i]) } array.on = function(eventType, fn){ for(var i=0; i< array.length; i++){ array[i].addEventListener(eventType, fn) } } array.addClass = function(className){ for(var i=0; i<array.length; i++){ array[i].classList.add(className) } } array.removeClass = function(className){ for(var i=0; i<array.length; i++){ array[i].classList.remove(className) } } array.toggleClass = function(className){ for(var i=0; i<array.length; i++){ array[i].classList.toggle(className) } } array.text = function(value){ if(value === undefined){ var result = [] for (var i=0; i<array.length; i++){ result.push(array[i].textContent) } return result } else { for (var i=0; i<array.length; i++) { array[i].textContent = value } } } array.html = function(string){ if(string === undefined){ var result = [] for (var i=0; i<array.length; i++){ result.push(array[i].innerHTML) } return result } else { for (var i=0; i<array.length; i++) { array[i].innerHTML = string } } } return array}window.$ = window.jQuery
若使用链式调用,每一个方法都要返回array
$xxx.addClass('c1').text('hello')
array.addClass = function(className){ for(var i=0; i<array.length; i++){ array[i].classList.add(className) } return array}array.text = function(value){ if(value === undefined){ var result = [] for (var i=0; i<array.length; i++){ result.push(array[i].textContent) } return result } else { for (var i=0; i<array.length; i++) { array[i].textContent = value } return array }}
若使用find()方法,采用递归方式
//html<div class="xxx"> <div class="hello"></div></div>//find()$xxx.find('.hello').addClass('world')// find方法定义array.find = function(selector){ var newArray = [] for(var i=0; i<array.length; i++){ var elements = array[i].querySelectorAll(selector) for(var j=0; j<elements.length; j++){ newArray.push(elements[j]) } } return jQuery(newArray)}
若使用end()方法,使$xxx.find('p').end() === $xxx
成立,需要记录之前的元素
var array = []if (typeof selectorOrElement === 'string'){ var elements = document.querySelectorAll(selectorOrElement) for(var i=0; i < elements.length; i++){ array.push(elements[i]) }} else if(selectorOrElement instanceof Array) { for(var i=0; i<selectorOrElement.length; i++){ array.push(selectorOrElement[i]) } array.previousSelection = selectorOrElement.previousSelection}// find方法中 newArray.previousSelection = arrayarray.find = function(selector){ var newArray = [] for(var i=0; i<array.length; i++){ var elements = array[i].querySelectorAll(selector) for(var j=0; j<elements.length; j++){ newArray.push(elements[j]) } } newArray.previousSelection = array return jQuery(newArray)}// end方法 返回之前的元素array.end = function(){ return array.previousSelection}
源码:
jquery-demo.js
window.jQuery = function(selectorOrElement){ var array = [] if (typeof selectorOrElement === 'string'){ var elements = document.querySelectorAll(selectorOrElement) for(var i=0; i < elements.length; i++){ array.push(elements[i]) } } else if(selectorOrElement instanceof Array) { for(var i=0; i<selectorOrElement.length; i++){ array.push(selectorOrElement[i]) } array.previousSelection = selectorOrElement.previousSelection } array.on = function(eventType, fn){ for(var i=0; i< array.length; i++){ array[i].addEventListener(eventType, fn) } return array } array.addClass = function(className){ for(var i=0; i<array.length; i++){ array[i].classList.add(className) } return array } array.removeClass = function(className){ for(var i=0; i<array.length; i++){ array[i].classList.remove(className) } return array } array.toggleClass = function(className){ for(var i=0; i<array.length; i++){ array[i].classList.toggle(className) } return array } array.text = function(value){ if(value === undefined){ var result = [] for (var i=0; i<array.length; i++){ result.push(array[i].textContent) } return result } else { for (var i=0; i<array.length; i++) { array[i].textContent = value } return array } } array.html = function(string){ if(string === undefined){ var result = [] for (var i=0; i<array.length; i++){ result.push(array[i].innerHTML) } return result } else { for (var i=0; i<array.length; i++) { array[i].innerHTML = string } return array } } array.find = function(selector){ var newArray = [] for(var i=0; i<array.length; i++){ var elements = array[i].querySelectorAll(selector) for(var j=0; j<elements.length; j++){ newArray.push(elements[j]) } } newArray.previousSelection = array return jQuery(newArray) } array.end = function(){ return array.previousSelection } return array}window.$ = window.jQuery
html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <script src="./jQuery-demo.js"></script> <style> .xxx{ background: gray; margin-bottom: 10px; height: 30px; } </style> <title>Document</title></head><body> <div class="xxx"> <div class="hello"></div> </div> <div class="xxx"></div> <script> var $xxx = $('.xxx') $xxx.on('click', function(){ console.log($xxx[0]) }) // $xxx.addClass('c1') // $xxx.removeClass('c1') // $xxx.toggleClass('c3') // $xxx.text() // $xxx.text('hello') // $xxx.html() // $xxx.html('<b>world</b>') // $xxx.addClass('c1').text('hello') // $xxx.find('.hello').addClass('world') // console.log($xxx.find('p').end() === $xxx) </script></body></html>
阅读全文
0 0
- jquery封装
- 封装jQuery
- jquery封装之--css封装
- 封装jquery弹出窗口
- jquery封装对话框插件
- jquery 时间封装包
- jQuery 的封装方法
- jquery 插件封装
- jQuery 插件开发 封装
- jquery封装jqgrid插件
- jQuery自定义类封装:
- jquery插件封装
- jquery 插件封装总结
- 封装jquery中的ajax
- jquery的代码封装
- jQuery自定义类封装
- jQuery封装框架
- jquery之封装插件
- POST请求
- WAVE PCM soundfile format
- Chapter3:字符串编码和文件操作
- kotlin-Android
- Codeforces Round #414
- 封装jQuery
- 关于ajaxfileupload file 的change事件 只绑定一次,
- Android线程—买票demo
- sql去掉空格
- spring mvc个人学习笔记
- 图片加载
- Ubuntu下vim编辑器中文乱码解决
- Python数据分析——初学者笔记
- Angularjs中select 的ng-repeat 和 ng-options 用法和获取选取值