精准猎取科技资讯,天堂视频在线观看,高效阅读科技新闻_黄色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前端開發 | 轉發媒體

隨意打賞

提交建議
微信掃一掃,分享給好友吧。
主站蜘蛛池模板: 隧道风机_DWEX边墙风机_SDS射流风机-绍兴市上虞科瑞风机有限公司 | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | SMN-1/SMN-A ABB抽屉开关柜触头夹紧力检测仪-SMN-B/SMN-C-上海徐吉 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 精密线材测试仪-电线电缆检测仪-苏州欣硕电子科技有限公司 | 深圳工程师职称评定条件及流程_深圳职称评审_职称评审-职称网 | 橡胶接头_橡胶软接头_套管伸缩器_管道伸缩器厂家-巩义市远大供水材料有限公司 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | 液压扳手-高品质液压扳手供应商 - 液压扳手, 液压扳手供应商, 德国进口液压拉马 | 深圳市东信高科自动化设备有限公司| 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 哈尔滨发电机,黑龙江柴油发电机组-北方星光 | 保镖公司-私人保镖-深圳保镖公司【环宇兄弟保镖】| 山东活动策划|济南活动公司|济南公关活动策划-济南锐嘉广告有限公司 | 板框压滤机-隔膜压滤机配件生产厂家-陕西华星佳洋装备制造有限公司 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 杭州成人高考_浙江省成人高考网上报名 | 安全阀_弹簧式安全阀_美标安全阀_工业冷冻安全阀厂家-中国·阿司米阀门有限公司 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 吸污车_吸粪车_抽粪车_电动三轮吸粪车_真空吸污车_高压清洗吸污车-远大汽车制造有限公司 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 一体化污水处理设备_生活污水处理设备_全自动加药装置厂家-明基环保 | 权威废金属|废塑料|废纸|废铜|废钢价格|再生资源回收行情报价中心-中废网 | 济南保安公司加盟挂靠-亮剑国际安保服务集团总部-山东保安公司|济南保安培训学校 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 北京中航时代-耐电压击穿试验仪厂家-电压击穿试验机 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 动环监控_机房环境监控_DCIM_机房漏水检测-斯特纽 | 电子元器件呆滞料_元器件临期库存清仓尾料_尾料优选现货采购处理交易商城 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 中式装修设计_全屋定制家具_实木仿古门窗花格厂家-喜迎门 | 电镀标牌_电铸标牌_金属标贴_不锈钢标牌厂家_深圳市宝利丰精密科技有限公司 | 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 |