jquery each() trim() extend()方法

each()方法

each() 方法规定为每个匹配元素规定运行的函数,遍历对象和数组,each 在dom处理上面用的较多。

使用:

$(selector).each(function(index,element){
	//index为选择器的 index 位置
	//element当前的元素(也可使用 "this" 选择器)
	方法内容
})

trim() 方法##

trim()函数用于去除字符串两端的空白字符。

正确使用

<input type="text" name="" id="txt" value=""/> 

var content = $('#txt').val(); 
if($.trim(content) == '') {
	alert('空');
}

错误使用

<input type="text" name="" id="txt" value=""/> 

if($('#txt').val().content.trim() == '') {
	alert('空');
} 

这样使用在ie浏览器下确会报错

extend()方法

extend() 函数用于将一个或多个对象的内容合并到目标对象。

**使用1:**扩展方法原型


$.extend(data, {obj1}, {obj2},{objN})

此操作是将obj1,obj2…objN合并到data中,返回合并后的data。

举个例子:

let data = {
	'name':'Tom',
	'age': '20',
	'sex': 'male',
	'professional':'teacher',
	'hobby':'book'
};
let obj1 = {
	'country':'China',
	'fruit': 'apple',
	'city': 'Shanghai'
};
let obj2 = {
	'friend':'Kitty',
	'mother': 'Lucy',
	'father': 'Bob'
};

$.extend(data,obj1,obj2);
console.log(data);

结果如下:
这里写图片描述
由此看出该操作修改了data的结构。如果想要得到合并的结果却又不想修改data的结构,可以使用下面的方法:

$.extend({},data, {obj1}, {obj2},{objN})

此方法使用{ }作为第一个参数,可以在不改变data结构的情况下将data与obj1,obj2,…objN合并在一起,返回一个新的json。

举例:

let data = {
	'name':'Tom',
	'age': '20',
	'sex': 'male',
	'professional':'teacher',
	'hobby':'book'
};
let obj1 = {
	'country':'China',
	'fruit': 'apple',
	'city': 'Shanghai'
};
let obj2 = {
	'friend':'Kitty',
	'mother': 'Lucy',
	'father': 'Bob'
};
let newData = $.extend({},data,obj1,obj2);
console.log(newData);
console.log(data);

结果:
newData:
这里写图片描述
data:
这里写图片描述
如果合并的json中有相同的名称,后面的值会覆盖前面的值

**使用2:**只为$.extend()指定一个参数。通过这种方式,我们可以为全局对象jQuery添加新的函数。

$.extend({
	say:function(){
		alert("hello world");
	}
});
$.say();    //结果会弹出一个alert弹框,此时say()为jquery的全局函数

**使用3:**重载原型

$.extend(boolean,data, {obj1}, {obj2},{objN})

第一个参数boolean代表是否进行深度拷贝

举例深拷贝:

let person1 = {
	'name':'Tom',
	'family': {
		'father':'Bob',
		'mother':'Tina',
		'borther': 'George'
	}		
};
let obj3 = {
	'friend':'Merry',
	'family': {
		'father':'John',
		'mother':'Lucy',
		'sister':'Alice'
	}	
}
let newPerson = $.extend(true,{},person1,obj3);

console.log(newPerson);

结果:
这里写图片描述
由此看出嵌套的family子对象也会被合并

当第一个参数为false,即不进行深拷贝时:

let person1 = {
	'name':'Tom',
	'family': {
		'father':'Bob',
		'mother':'Tina',
		'borther': 'George'
	}		
};
let obj3 = {
	'friend':'Merry',
	'family': {
		'father':'John',
		'mother':'Lucy',
		'sister':'Alice'
	}	
}
let newPerson = $.extend(false,{},person1,obj3);

console.log(newPerson );

结果:
这里写图片描述
即嵌套的对象不会被深拷贝,同名的key后者会覆盖掉前者

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值