關(guān)于JQ的DOM操作面試問題很多浊服,可以從各個點問,所以列舉幾個常見問題驱证,畢竟面試只是過程,重要的是知識自己掌握了恋腕。
面試題一:JQ中html()抹锄、text()和val()區(qū)別?
面試題二:JQ中find()、has()和filter()區(qū)別伙单?
面試題三: closet()和parents()區(qū)別获高?
答案請在文中查找...
DOM操作有三類:DOM-core、HTML-DOM 吻育、CSS-DOM
1.插入節(jié)點
我們用的最多的就是append和apendTo念秧,其實共有8種方法。
2.刪除節(jié)點
remove():刪除節(jié)點扫沼,并刪除元素節(jié)點綁定的事件出爹。
empty():清空節(jié)點元素的內(nèi)容庄吼,類似$().html(' ')缎除。
3.克隆(復(fù)制)節(jié)點
$().clone()总寻,只復(fù)制節(jié)點器罐,不復(fù)制方法和事件。
添加clone(true)渐行,不僅復(fù)制節(jié)點轰坊,也復(fù)制方法,也叫深度克隆祟印。
4.替換節(jié)點
$('new').replaceWith('old') 肴沫,返回new元素。
$('old').replaceAll('new')蕴忆,返回old元素颤芬。
如果在替換之前,已為元素綁定事件套鹅,替換后原有綁定事件將會被替換的元素一起消失站蝠,需要在新元素上重新綁定事件。
5.包裹節(jié)點
$('span').wrapAll('<div>'):將所有元素用一個元素包裹卓鹿。
wrap():將所有元素單獨包裹菱魔。
wrapInner:包裹元素內(nèi)容。
unwrap():刪除包裹吟孙,刪除父元素澜倦,不包含body。
6.遍歷節(jié)點
children():只考慮子元素杰妓,不考慮后代元素藻治。
next():同輩緊鄰后面一個元素。
nextAll():同輩緊鄰后面所有兄弟元素稚失。
prev():同輩緊鄰前一個兄弟元素栋艳。
prevAll():同輩緊鄰前所有兄弟元素。
siblings():同輩所有兄弟元素句各。
find('span'):返回被選元素的后代元素吸占,括號內(nèi)必填寫晴叨,如果查找所有后代使用 "*",起查找作用矾屯。
filter('div'):指定選擇器的xx元素兼蕊,括號內(nèi)必填寫,符合條件的同級元素件蚕,非后代元素孙技,起過濾作用。
has(‘div’):符合條件的后代元素排作,不包含自身牵啦,括號內(nèi)必填寫,起過濾作用妄痪。
parents():獲取所有祖先元素哈雏,參數(shù)為篩選條件。
closest(‘.new’):用來取得最近的匹配元素衫生,包括自身裳瘪。首選檢查自身是否符合,如果符合返回元素本身罪针;如果不匹配彭羹,向上查找父元素,逐級向上直到匹配到選擇器的元素泪酱。如果什么沒找到派殷,返回一個空的jq對象。必須填寫篩選條件西篓,且只能找到一個元素愈腾。
parentsUntil():截止到xx位置的祖先節(jié)點。
7.屬性及樣式操作
$().css({'background-color':'red'}):修改css樣式岂津。設(shè)置后虱黄,顯示為內(nèi)聯(lián)樣式。如果值為數(shù)字吮成,jq自動轉(zhuǎn)為xx像素橱乱。{'background-color':'red'}也可寫成{backgroundColor:'red'},建議采用前一種方式粱甫,以為其底層就是哈希數(shù)組泳叠。
$().attr('title'):獲取title屬性。
$().removeAttr(title'):刪除title屬性茶宵。
$().addClass(‘new’):添加class的名字危纫,不是選擇器,故不是“.new”。
$().removeClass(‘new’):與上相反种蝶。
$().toggle():
$().toggleClass():
$().hasClass():判斷某元素是否有某個class契耿。
8.內(nèi)容操作
$().html() :獲取內(nèi)容,含html標簽螃征,可以用于XHTML搪桂,但不能用于XML。
$().text():獲取文本內(nèi)容盯滚,不含標簽踢械。可以用于XHTML和XML,支持所有瀏覽器魄藕,原生innerText火狐不支持内列。
$().val():獲取表單元素的內(nèi)容。
下面說說三者的異同點:
9.其它節(jié)點操作
$('div').slice(1,4)泼疑,獲取滿足條件的div德绿。
$('div').add('p').css(),自由組合添加樣式,給div和p都添加公有的樣式退渗。