模仿jQuery css及each实现基本功能

27 篇文章 0 订阅
1 篇文章 0 订阅

模仿jQuery css及each实现基本功能

jQuery - css() 方法

  • css() 方法设置或返回被选元素的一个或多个样式属性。

  • 返回 CSS 属性

$("p").css("background-color");
  • 设置 CSS 属性
$("p").css("background-color","yellow");
  • 设置多个 CSS 属性
$("p").css({"background-color":"yellow","font-size":"200%"});

each定义和用法

  • each() 方法规定为每个匹配元素规定运行的函数。
  • 提示:返回 false 可用于及早停止循环。
  • 语法
$(selector).each(function(index,element))
  • each接受3个参数:数组、回调函数(回调函数的参数是第三个参数数组的元素,函数里的this就是遍历元素自己)、一个额外的参数数组
$.each([1,2,3], function(arg1, arg2) {
  	console.log(this + "," + arg1 + "," + arg2);
}, [4, 5]);
//输出	1 4 5 	2 4 5	3 4 5 

模仿jQuery css及each实现基本功能

let utils = (function(){
	//获取样式
	let getCss = (ele,attr)=>{
		let val = null,
			reg = /^-?\d+(\.\d+)?(px|rem|em)?$/;
			if('getComputedStyle' in window){
				val = window.getComputedStyle(ele)[attr]
				if(reg.test(val)){
					val = polatFolat(val)
				}
			}
			return val
	}
	//设置样式
	let setCss = (ele,attr,value)=>{
		if(!isNaN(value)){
			if(!/^(opacity|zIndex)$/.test(attr)){
				value +='px';
			}
		}
		ele['style'][attr] = value;
	}

//批量设置样式
	let setGroupCss = (ele,options)=>{
		for(let attr in options){
			if(options.hasOwnProperty(attr)){
				setCss(ele,attr,options[attr])
			}
		}
	}
	let css=(...arg)=>{
		let len  = options.length,
			fn = getCss;
		len===3?fn = setCss:null;
		len===2&& typeof arg[1]==='object'?fn=setGroupCss :null
		return fn(...arg)
	}

	//=>EACH:遍历对象、数组、类数组
	let each =(obj,callback)=>{
		if('length' in obj){
			for(let i =0;i<obj.length;i++){
			 	let item = obj[i],
			 		 res = callback  && callback.call(item,i,item) 
			 		 if(res===false){
			 		 		break;
			 		 }
			}
		}
		for(let attr in obj){
			if(obj.hasOwnproperty(attr)){
				let item = obj[attr],
					res = callback  && callback.call(item,i,item);
					if(res===false){
						break;
					}
			}
		}
	}

	return {css,each}
})();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值