jQuery操作Dom元素與遍歷以及JS遍歷詳細(xì)講解
jQuery操作Dom元素
jQuery的主要用法為“選擇某個dom元素,再對其進(jìn)行某種操作”;jQuery一般簡寫成“$”。使用CSS選擇器獲取元素
$(document) //選擇整個文檔對象
$('#myId') //選擇ID為myId的網(wǎng)頁元素
$('div.myClass') // 選擇class為myClass的div元素
$('input[name=first]') // 選擇name屬性等于first的input元素
使用jQuery特有的表達(dá)式獲取
$('a:first') //選擇網(wǎng)頁中第一個a元素
$('tr:odd') //選擇表格的奇數(shù)行
$('#myForm :input') // 選擇表單中的input元素
$('div:visible') //選擇可見的div元素
$('div:gt(2)') // 選擇所有的div元素,除了前三個
$('div:animated') // 選擇當(dāng)前處于動畫狀態(tài)的div元素
jQuery的鏈?zhǔn)讲僮?,選中某個dom元素后進(jìn)行一系列操作
// 案例
$('div').find('h3').eq(2).html('Hello');
// 分解
$('div') //找到div元素
.find('h3') //選擇div元素中的h3元素
.eq(2) //選擇第3個h3元素
.html('Hello'); //將它的內(nèi)容改為Hello
// 之所以可以這樣操作,是因為每一步的jQuery操作返回的都是一個對象
// jQuery還提供了.end()函數(shù),可以使結(jié)果后退一步
$('div')
.find('h3')
.eq(2)
.html('Hello')
.end() //退回到選中所有的h3元素的那一步
.eq(0) //選中第一個h3元素
.html('World'); //將它的內(nèi)容改為World jQuery創(chuàng)建Dom元素:只要把新元素直接傳入jQuery的構(gòu)造函數(shù)就行。(注意:jQuery構(gòu)造函數(shù)括號中的內(nèi)容使用單引號,不要使用雙引號,因為單引號可以直接進(jìn)行字符串拼接,否則無法區(qū)分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元素。你可以根據(jù)需要,選擇到底使用哪一種方法。
7. jQuery插入元素
.insertAfter()和.after():在現(xiàn)存元素的外部,從后面插入元素 .insertBefore()和.before():在現(xiàn)存元素的外部,從前面插入元素 .appendTo()和.append():在現(xiàn)存元素的內(nèi)部,從后面插入元素 .prependTo()和.prepend():在現(xiàn)存元素的內(nèi)部,從前面插入元素
jQuery修改元素值,獲取元素值,給元素賦值(jQuery使用了同一個函數(shù),來完成取值(getter)和賦值(setter),即"取值器"與"賦值器"合一。到底是取值還是賦值,由函數(shù)的參數(shù)決定。賦值也可以對原來的屬性進(jìn)行修改。)
$('h1').html(); //html()沒有參數(shù),表示取出h1的值
$('h1').html('Hello'); //html()有參數(shù)Hello,表示對h1進(jìn)行賦值
// 常用函數(shù) .html() 取出或設(shè)置html內(nèi)容 .text() 取出或設(shè)置text內(nèi)容 .attr() 取出或設(shè)置某個屬性的值 // 這個常用在修改iframe元素的src屬性 .width() 取出或設(shè)置某個元素的寬度 .height() 取出或設(shè)置某個元素的高度 .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對
});
總結(jié):
- jQuery遍歷主要用來遍歷Dom元素,獲取Dom元素的值,傳遞到服務(wù)端。
- JavaScript的遍歷主要用來遍歷服務(wù)端返回的數(shù)據(jù),通過遍歷對象,結(jié)合jQuery給Dom元素賦值
- jQuery的作用是為了方便對Dom進(jìn)行操作
JavaScript遍歷
數(shù)組遍歷
// for --使用變量將數(shù)組長度緩存起來,在數(shù)組較長時性能優(yōu)化效果明顯
for(var i=0,len=arr.length;i<len;i++){
console.log("元素:"+arr[i]);
}
// forEach --ES5語法,對數(shù)組的每個元素執(zhí)行一次提供的函數(shù),不能使用break、return
arr.forEach(function(item,index,arr){
console.log("元素:"+item+" 索引:"+index+" 整個數(shù)組:"+arr);
})
// map --ES5語法,創(chuàng)建一個新數(shù)組,其結(jié)果是該數(shù)組中的每個元素都調(diào)用一個提供的函數(shù)后返回的結(jié)果
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的屬性,對于每個不同的屬性,語句都會被執(zhí)行
for(var key in obj){
console.log("屬性:"+key+" 值:"+obj[key]);
}
// Object.keys() --返回一個由一個給定對象的自身可枚舉屬性組成的數(shù)組,數(shù)組中屬性名的排列順序和使用for...in循環(huán)遍歷該對象時返回的順序一致
Object.keys(obj);
// Object.values() --返回一個給定對象自身的所有可枚舉屬性值的數(shù)組,值的順序與使用for...in循環(huán)的順序相同(區(qū)別在于 for-in 循環(huán)枚舉原型鏈中的屬性)
Object.values(obj);
// Object.getOwnPropertyNames() --返回一個由指定對象的所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數(shù)組
Object.getOwnPropertyNames(obj);
字符串遍歷
// for...of --ES6語法,可以遍歷Array、Set、Map、String、TypedArray、arguments等可迭代對象,可以使用break、continue
for(let char of string){
console.log("字符:"+char);
}
到此這篇關(guān)于jQuery操作Dom元素與遍歷以及JS遍歷詳細(xì)講解的文章就介紹到這了,更多相關(guān)jQuery操作Dom元素內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
jQuery is not defined 錯誤原因與解決方法小結(jié)
今天在測試一個程序的時候,明顯已經(jīng)加載了jquery但總是提示jQuery is not defined,經(jīng)過多方測試終于發(fā)現(xiàn)了問題,這里簡單總結(jié)一下,需要的朋友可以參考下2017-03-03

