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后者会覆盖掉前者