jQuery操作Dom元素
- jQuery的主要用法为“选择某个dom元素,再对其进行某种操作”;jQuery一般简写成“$”。
- 使用CSS选择器获取元素
$(document) //选择整个文档对象
$('#myId') //选择ID为myId的网页元素
$('div.myClass') // 选择class为myClass的div元素
$('input[name=first]') // 选择name属性等于first的input元素
- 使用jQuery特有的表达式获取
$('a:first') //选择网页中第一个a元素
$('tr:odd') //选择表格的奇数行
$('#myForm :input') // 选择表单中的input元素
$('div:visible') //选择可见的div元素
$('div:gt(2)') // 选择所有的div元素,除了前三个
$('div:animated') // 选择当前处于动画状态的div元素
- jQuery的链式操作,选中某个dom元素后进行一系列操作
// 案例
$('div').find('h3').eq(2).html('Hello');
// 分解
$('div') //找到div元素
.find('h3') //选择div元素中的h3元素
.eq(2) //选择第3个h3元素
.html('Hello'); //将它的内容改为Hello
// 之所以可以这样操作,是因为每一步的jQuery操作返回的都是一个对象
// jQuery还提供了.end()函数,可以使结果后退一步
$('div')
.find('h3')
.eq(2)
.html('Hello')
.end() //退回到选中所有的h3元素的那一步
.eq(0) //选中第一个h3元素
.html('World'); //将它的内容改为World
- jQuery创建Dom元素:只要把新元素直接传入jQuery的构造函数就行。(注意:jQuery构造函数括号中的内容使用单引号,不要使用双引号,因为单引号可以直接进行字符串拼接,否则无法区分class后面的双引号)
$('<p>Hello</p>'); // 注意使用单引号
$('<li class="new">new list item</li>');
$('ul').append('<li>list item</li>');
- jQuery移动元素有两种方式
- 直接移动该元素
- 移动其它元素
// 选中一个div元素,将它移动到p元素的后面
// 方式一
$('div').insertAfter($('p'));
// 方式二
$('p').after($('div'));
表面上看,这两种方法的效果是一样的,唯一的不同似乎只是操作视角的不同。但是实际上,它们有一个重大差别,那就是返回的元素不一样。第一种方法返回div元素,第二种方法返回p元素。你可以根据需要,选择到底使用哪一种方法。
7. jQuery插入元素
.insertAfter()和.after():在现存元素的外部,从后面插入元素
.insertBefore()和.before():在现存元素的外部,从前面插入元素
.appendTo()和.append():在现存元素的内部,从后面插入元素
.prependTo()和.prepend():在现存元素的内部,从前面插入元素
- jQuery修改元素值,获取元素值,给元素赋值(jQuery使用了同一个函数,来完成取值(getter)和赋值(setter),即"取值器"与"赋值器"合一。到底是取值还是赋值,由函数的参数决定。赋值也可以对原来的属性进行修改。)
$('h1').html(); //html()没有参数,表示取出h1的值
$('h1').html('Hello'); //html()有参数Hello,表示对h1进行赋值
// 常用函数
.html() 取出或设置html内容
.text() 取出或设置text内容
.attr() 取出或设置某个属性的值 // 这个常用在修改iframe元素的src属性
.width() 取出或设置某个元素的宽度
.height() 取出或设置某个元素的高度
.val() 取出某个表单元素的值
jQuery遍历几种方式
- 选择器遍历两种方式
// 方式一
$('div').each(function (i){
i就是索引值
this 表示获取遍历每一个dom对象
});
// 方式二
$('div').each(function (index,domEle){
index就是索引值
domEle 表示获取遍历每一个dom对象
});
- 另一种遍历方式
// 先获取某个集合对象
// 遍历集合对象的每一个元素
var d=$("div");
$.each(d,function (index,domEle){
d是要遍历的集合
index就是索引值
domEle 表示获取遍历每一个dom对
});
总结:
- jQuery遍历主要用来遍历Dom元素,获取Dom元素的值,传递到服务端。
- JavaScript的遍历主要用来遍历服务端返回的数据,通过遍历对象,结合jQuery给Dom元素赋值
- jQuery的作用是为了方便对Dom进行操作
JavaScript遍历
- 数组遍历
// for --使用变量将数组长度缓存起来,在数组较长时性能优化效果明显
for(var i=0,len=arr.length;i<len;i++){
console.log("元素:"+arr[i]);
}
// forEach --ES5语法,对数组的每个元素执行一次提供的函数,不能使用break、return
arr.forEach(function(item,index,arr){
console.log("元素:"+item+" 索引:"+index+" 整个数组:"+arr);
})
// map --ES5语法,创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果
arr.map(function(val,index){
console.log("元素:"+val+" 索引:"+index);
return val*val;
})
// for...of --ES6语法,可以遍历Array、Set、Map、String、TypedArray、arguments等可迭代对象,可以使用break、continue
for(let item of arr){
console.log("元素:"+item);
}
- 对象遍历
// for...in --以任意顺序遍历一个对象自有的、继承的、可枚举的、非Symbol的属性,对于每个不同的属性,语句都会被执行
for(var key in obj){
console.log("属性:"+key+" 值:"+obj[key]);
}
// Object.keys() --返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用for...in循环遍历该对象时返回的顺序一致
Object.keys(obj);
// Object.values() --返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同(区别在于 for-in 循环枚举原型链中的属性)
Object.values(obj);
// Object.getOwnPropertyNames() --返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组
Object.getOwnPropertyNames(obj);
- 字符串遍历
// for...of --ES6语法,可以遍历Array、Set、Map、String、TypedArray、arguments等可迭代对象,可以使用break、continue
for(let char of string){
console.log("字符:"+char);
}