直接使用瀏覽器提供的API對(duì)DOM結(jié)構(gòu)進(jìn)行修改沫勿,不但代碼復(fù)雜烫罩,而且要針對(duì)瀏覽器寫(xiě)不同的代碼。
有了jQuery,我們就專注于操作jQuery對(duì)象本身,底層的DOM操作由jQuery完成就可以了邪财,這樣一來(lái),修改DOM也大大簡(jiǎn)化了树埠。
添加DOM
要添加新的DOM節(jié)點(diǎn)糠馆,除了通過(guò)jQuery的html()這種暴力方法外,還可以用append()方法绊袋,例如:
<div id="test-div">
<ul>
<li><span>JavaScript</span></li>
<li><span>Python</span></li>
<li><span>Swift</span></li>
</ul>
</div>
如何向列表新增一個(gè)語(yǔ)言毕匀?首先要拿到<ul>
節(jié)點(diǎn):
var ul = $('%test-div>ul');
然后,調(diào)用append()傳入HTML片段:
ul.append('<li><span>Haskell</span></li>');
除了接受字符串愤炸,append()還可以傳入原始的DOM對(duì)象期揪,jQuery對(duì)象和函數(shù)對(duì)象:
創(chuàng)建DOM對(duì)象
var ps = document.createElement('li');
ps.innerHTML = '<sapn>Pascal</span>';
添加DOM對(duì)象
ul.append(ps);
添加jQuery對(duì)象
ul.append($('#scheme'));
添加函數(shù)
ul.append(function (index,html) {
return '<li><span>Language - ' + index + '</sapn></li>';
});
傳入函數(shù)時(shí),要求返回一個(gè)字符串规个、DOM對(duì)象或者jQuery對(duì)象凤薛。
因?yàn)閖Query的append()可能作用于一組DOM節(jié)點(diǎn),只有傳入函數(shù)才能針對(duì)每個(gè)DOM生成不同的子節(jié)點(diǎn)诞仓。
append()把DOM添加到最后缤苫,prepend()則把DOM添加到最前。
另外注意墅拭,如果要添加的DOM節(jié)點(diǎn)已經(jīng)存在于HTML文檔中活玲,它會(huì)首先從文檔移除,然后再添加谍婉,也就是說(shuō)舒憾,用append(),你可以移動(dòng)一個(gè)DOM節(jié)點(diǎn)穗熬。
如果要把新節(jié)點(diǎn)插入到指定位置镀迂,例如,JavaScript和Python之間唤蔗,那么探遵,可以先定位到JavaScript,然后用after()方法:
var js = $('#test-div>ul>li:first-child');
js.after('<li><span>Lua</span></li>');
也就是說(shuō)妓柜,同級(jí)節(jié)點(diǎn)可以用after()或者before()方法箱季。
刪除節(jié)點(diǎn)
要?jiǎng)h除DOM節(jié)點(diǎn),拿到j(luò)Query對(duì)象后直接調(diào)用remove()方法就可以了棍掐。如果jQuery對(duì)象包含若干DOM節(jié)點(diǎn)藏雏,實(shí)際上可以一次刪除多個(gè)DOM節(jié)點(diǎn):
var li = $('#test-div>ul>li');
li.remove(); // 所有<li>全被刪除