精准猎取科技资讯,天堂视频在线观看,高效阅读科技新闻_黄色av网站在线免费观看_科技猎

jQuery選擇器對應的DOM API ——DOM 操作 – WEB前端開發

我是創始人李巖:很抱歉!給自己產品做個廣告,點擊進來看看。  
英文原文: http://blog.garstasio.com/you-dont-need-jquery/dom-manipulation/
愚人碼頭注:

DOM Manipulation(DOM 操作)

我們已經看過 如何輕松地選擇元素,而不依賴于jQuery 。但對于改變元素?怎么樣創建新的元素呢?如何在頁面移動元素呢?當你知道不用jQuery來實現這一切,或者更多,你可能會很高興。Web API為我們提供了所有我們所需要的工具。

你會看到jQuery或任何其他庫對一些DOM操作的幫助是微不足道的。然而,其他人可能有點棘手。再次強調,我不是要抨擊的jQuery, 我也不會斷言jQuery是無用的或完全不必要的。這騙文章的目的是告訴你如何不用jQuery。如果你選擇這樣做。你可能會發現, 在許多情況下,大多數的腳本庫,像jQuery中的大多數功能未使用,并且可以省略。

  1. Creating Elements
  2. Inserting Elements Before & After
  3. Inserting Elements As Children
  4. Moving Elements
  5. Removing Elements
  6. Adding & Removing CSS Classes
  7. Adding/Removing/Changing Attributes
  8. Adding & Changing Text Content
  9. Adding/Updating Element Styles
  10. Micro-libraries For More Help
  11. Next

Creating Elements(創建元素)

jQuery

$('<div></div>');

DOM API

				// IE 5.5+
				document.createElement('div');
			

哇,很容易是吧。 jQuery為我們節省了幾個直接,但幾乎是不值一提的字節數。

Inserting Elements Before & After(在元素前后插入)

讓我們創建一個元素并且在特定元素后插入。

比如初始狀態是這樣的:

				<div id="1"></div>
				<div id="2"></div>
				<div id="3"></div>
			

… 我們希望創建一個新的元素,ID為’1.1’,并且插入到第一個和第二個DIV之間,比如說這樣:

				<div id="1"></div>
				<div id="1.1"></div>
				<div id="2"></div>
				<div id="3"></div>
			

jQuery

$('#1').after('<div id="1.1"></div>');

DOM API

				// IE 4+
				document.getElementById('1')
				.insertAdjacentHTML('afterend', '<div id="1.1"></div>');
			

愚人碼頭注:關于 insertAdjacentHTML方法可以點這里 查看更多

哈!,不用jQuery,在每個瀏覽器中也都很容易,僅僅依靠瀏覽器內置的方法。

Ok, 如果我們想要在第一個div之前插入一個新的元素,那么就這樣:

				<div id="0.9"></div>
				<div id="1"></div>
				<div id="2"></div>
				<div id="3"></div>
			

jQuery

$('#1').before('<div id="0.9"></div>');

DOM API

				// IE 4+
				document.getElementById('1')
				.insertAdjacentHTML('beforebegin', '<div id="0.9"></div>');
			

原生的DOM API的方法幾乎是相同的,只是參數不同,jQuery的方法是不同的。

Inserting Elements As Children(作為子元素插入,內部插入)

比如,初始化的時候是這樣的:

				<div id="parent">
				<div id="oldChild"></div>
				</div>
			

…我們想要創建一個新元素并使其成為#parent元素的第一個子元素,就像這樣:

				<div id="parent">
				<div id="newChild"></div>
				<div id="oldChild"></div>
				</div>
			

jQuery

$('#parent').prepend('<div id="newChild"></div>');

DOM API

				// IE 4+
				document.getElementById('parent')
				.insertAdjacentHTML('afterbegin', '<div id="newChild"></div>');
			

…或創建一個新的元素,使之成為#parent的最后一個子元素:

				<div id="parent">
				<div id="oldChild"></div>
				<div id="newChild"></div>
				</div>
			

jQuery

$('#parent').append('<div id="newChild"></div>');

DOM API

				// IE 4+
				document.getElementById('parent')
				.insertAdjacentHTML('beforeend', '<div id="newChild"></div>');
			

所有這一切看起來很像前面插入新元素。是很簡單的,跨瀏覽器,而不用jQuery的任何幫助(或任何其他的庫)。

Moving Elements(移動元素)

考慮下面的標記:

				<div id="parent">
				<div id="c1"></div>
				<div id="c2"></div>
				<div id="c3"></div>
				</div>
				<div id="orphan"></div>
			

如果我們想移動#orphan作為#parent的最后一個子元素?

結果就想這樣:

				<div id="parent">
				<div id="c1"></div>
				<div id="c2"></div>
				<div id="c3"></div>
				<div id="orphan"></div>
				</div>
			

jQuery

$('#parent').append($('#orphan'));

DOM API

				// IE 5.5+
				document.getElementById('parent')
				.appendChild(document.getElementById('orphan'));
			

不用jQuery也很簡單。但是,如果我們想使#orphan作為#parent的第一個子元素,結果就想這樣:

				<div id="parent">
				<div id="orphan"></div>
				<div id="c1"></div>
				<div id="c2"></div>
				<div id="c3"></div>
				</div>
			

jQuery

$('#parent').prepend($('#orphan'));

DOM API

				// IE 5.5+
				document.getElementById('parent')
				.insertBefore(document.getElementById('orphan'), document.getElementById('c1'));
			

我們仍然用一行代碼搞定,但不用jQuery有點不太直觀,啰嗦。不過,并不算太糟糕。

Removing Elements(移除元素)

我們怎樣才能從DOM中刪除一個元素呢?比方說,我們知道一個ID為’foobar’的元素存在。讓我們刪除它!

jQuery

$('#foobar').remove();

DOM API

				// IE 5.5+
				document.getElementById('foobar').parentNode
				.removeChild(document.getElementById('foobar'));
			

DOM API的方法肯定是有點冗長和丑陋,但它能正常運行!需要注意的是,我們沒有必要知道他的直接父元素,這是很好的。

Adding & Removing CSS Classes(添加&移除CSS樣式類)

我們有一個簡單的元素:

<div id="foo"></div>

…讓我們添加一個”bold”的CSS樣式類到這個元素上,結果就像這樣:

<div id="foo" class="bold"></div>

jQuery

$('#foo').addClass('bold');

DOM API

document.getElementById('foo').className += 'bold';

現在讓我們移除這個CSS樣式類:

jQuery

$('#foo').removeClass('bold');

DOM API

				// IE 5.5+
				document.getElementById('foo').className =
				document.getElementById('foo').className.replace(/^bold$/, '');
			

同樣的,不用jQuery仍然很簡單,就是多了幾個字節。

Adding/Removing/Changing Attributes(添加/移除/改變屬性)

讓我們從一個簡單的元素開始,就像這樣:

現在,讓我們讓這個 <div> 實際上充當一個按鈕功能。我們應該附加恰當的 role 屬性,使這個元素更容易理解。

jQuery

$('#foo').attr('role', 'button');

DOM API

				// IE 5.5+
				document.getElementById('foo').setAttribute('role', 'button');
			

在這兩種情況下,一個新的屬性被創建,或現有的屬性可以用相同的代碼進行更新。

如果我們的 <div> 的行為有所變化,它不再作為按鈕功能使用。事實上,這只是一個普通的 <div> 標記。那么讓我們刪除的 role 屬性…

jQuery

$('#foo').removeAttr('role');

DOM API

				// IE 5.5+
				document.getElementById('foo').removeAttribute('role');
			

Adding & Changing Text Content(添加 & 修改文本內容)

假設我們有以下HTML標記:

<div id="foo">Hi there!</div>

…但是我們想將文本更新為 “Goodbye!”。

jQuery

$('#foo').text('Goodbye!');

請注意,您也可以輕松地設置元素的當前文本。

DOM API

				// IE 5.5+
				document.getElementById('foo').innerHTML = 'Goodbye!';
				// IE 5.5+ but NOT Firefox
				document.getElementById('foo').innerText = 'GoodBye!';
				// IE 9+
				document.getElementById('foo').textContent = 'Goodbye!';
			

上面兩個屬性都將返回當前元素的HTML/文本。

使用 innerTexttextContent 優勢是可以將任何HTML轉義,這是一個很大的優點,如果內容是用戶提供的,你永遠只希望得到所選元素內容的是文本。

Adding/Updating Element Styles(增加/更新元素的樣式)

一般情況下,添加的內聯的樣式或使用JavaScript添加的樣式是 “code smell” ,但在一些特殊的實例中你可能需要這么做。對于這些情況,我會告訴你如何能夠使用jQuery和DOM API來完成。

<span id="note">Attention!</span>

..我們想要讓他突出一點,所以讓我們給他文字加粗。

jQuery

$('#note').css('fontWeight', 'bold');

DOM API

				// IE 5.5+
				document.getElementById('note').style.fontWeight = 'bold';
			

事實上,在這種情況下,我更喜歡的DOM API的方法。它似乎比jQuery的 css 的方法更加直觀。

Micro-Libraries For More Help(更多幫助)

所以,你并不真的需要用jQuery來做跨瀏覽器的DOM操作!我了解jQuery可能使一些復雜的操作變得更容易一些,但是如果你真的只關心復雜的DOM操作,那么再考慮引用只專注于這一點的比較小的庫。這里有兩個不錯的選擇 jBone 和 dom.js 。用自己寫的庫也沒什么不好。DOM操作并不像你想像的那么難。

Next

下一篇:AJAX請求,敬請期待!

本文被轉載1次

首發媒體 Web前端開發 | 轉發媒體

隨意打賞

提交建議
微信掃一掃,分享給好友吧。
主站蜘蛛池模板: 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 氢氧化钙设备_厂家-淄博工贸有限公司 | 浙江上沪阀门有限公司 | 产业规划_产业园区规划-产业投资选址及规划招商托管一体化服务商-中机院产业园区规划网 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 石牌坊价格石牌坊雕刻制作_石雕牌坊牌楼石栏杆厂家_山东嘉祥石雕有限公司 | 菲希尔X射线测厚仪-菲希尔库伦法测厚仪-无锡骏展仪器有限责任公司 | 真丝围巾|真丝丝巾|羊绒围巾|围巾品牌|浙江越缇围巾厂家定制 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 常州企业采购平台_常州MRO采购公司_常州米孚机电设备有限公司 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 便携式谷丙转氨酶检测仪|华图生物科技百科 | 无线遥控更衣吊篮_IC卡更衣吊篮_电动更衣吊篮配件_煤矿更衣吊篮-力得电子 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 淬火设备-钎焊机-熔炼炉-中频炉-锻造炉-感应加热电源-退火机-热处理设备-优造节能 | 胶原检测试剂盒,弹性蛋白检测试剂盒,类克ELISA试剂盒,阿达木单抗ELISA试剂盒-北京群晓科苑生物技术有限公司 | 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | 济南品牌设计-济南品牌策划-即合品牌策划设计-山东即合官网 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 十字轴_十字轴万向节_十字轴总成-南京万传机械有限公司 | 芝麻黑-芝麻黑石材厂家-永峰石业 | 精密钢管,冷拔精密无缝钢管,精密钢管厂,精密钢管制造厂家,精密钢管生产厂家,山东精密钢管厂家 | 船老大板材_浙江船老大全屋定制_船老大官网| 磁力抛光机_磁力研磨机_磁力去毛刺机_精密五金零件抛光设备厂家-冠古科技 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 济南电缆桥架|山东桥架-济南航丰实业有限公司 | 对辊式破碎机-对辊制砂机-双辊-双齿辊破碎机-巩义市裕顺机械制造有限公司 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 语料库-提供经典范文,文案句子,常用文书,您的写作得力助手 | 石牌坊价格石牌坊雕刻制作_石雕牌坊牌楼石栏杆厂家_山东嘉祥石雕有限公司 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 耐磨焊丝,堆焊焊丝,耐磨药芯焊丝,碳化钨焊丝-北京耐默公司 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 | 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 苏州防水公司_厂房屋面外墙防水_地下室卫生间防水堵漏-苏州伊诺尔防水工程有限公司 |