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

jQuery語法對應的DOM API ——選擇元素 – WEB前端開發

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

選擇元素

有多少次你看到一個Web應用程序或庫使用jQuery執行簡單瑣碎的元素選擇?有多少次 這樣寫: $(#myElement') ? 或者這樣 $('.myElement') ?噓……你不需要用jQuery選擇元素!這使用DOM API也很容易做到。

  1. IDs
  2. CSS Classes
  3. Tag Names
  4. Attributes
  5. Pseudo-classes
  6. Children
  7. Descendants
  8. Exclusion Selectors
  9. Multiple Selectors
  10. See a Pattern?
  11. Filling in the Gaps
  12. Next in this Series

By ID

jQuery

				// returns a jQuery obj w/ 0-1 elements
				$('#myElement');
			

DOM API

				// IE 5.5+
				document.getElementById('myElement');
			

…或者…

				// IE 8+
				document.querySelector('#myElement');
			

這兩種方法返回一個 Element (元素)。 需要注意的是 使用 getElementById 比使用 querySelector 更高效 。

請問jQuery的語法提供任何好處嗎?我沒有看到一個。你呢?

By CSS Class

jQuery

				// returns a jQuery obj w/ all matching elements
				$('.myElement');
			

DOM API

				// IE 9+
				document.getElementsByClassName('myElement');
			

…或者…

				// IE 8+
				document.querySelectorAll('.myElement');
			

第一個方法返回的 HTMLCollection ,并且 效率最高的是第二個方法 。 querySelectorAll 總是返回一個 NodeList (節點列表) 。

同樣,這里真的很簡單的東西。為什么要使用jQuery?

By Tag Name

舉個例子,選擇頁面上所有的 <div> 元素:

jQuery

$('div');

DOM API

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

…或者…

				// IE 8+
				document.querySelectorAll('div');
			

正如預期的那樣, querySelectorAll (返回 NodeList )比 getElementsByTagName (返回 HTMLCollection )效率低。

By Attribute(屬性)

選擇所有”data-foo-bar”值為”someval”的元素:

jQuery

$('[data-foo-bar="someval"]');

DOM API

					// IE 8+
					document.querySelectorAll('[data-foo-bar="someval"]');
				

DOM API和jQuery語法非常相似。

By Pseudo-class(偽類)

選擇所有在指定表單中的當前無效(:invalid 偽類)字段。假設我們的表單 ID為”myForm”。

jQuery

$('#myForm :invalid');

DOM API

					// IE 8+
					document.querySelectorAll('#myForm :invalid');
				

Children(子元素)

選擇一個特定元素的所有子元素。?假設我們的特定元素 ID為 “myParent”。

jQuery

$('#myParent').children();

DOM API

					// IE 5.5+
					// NOTE: This will include comment and text nodes as well.
					document.getElementById('myParent').childNodes;
				

…或者…

					// IE 9+ (ignores comment & text nodes).
					document.getElementById('myParent').children;
				

但是,如果我們只想找到特定的子元素呢?比如,有 “ng-click”屬性的子元素?

jQuery

$('#myParent').children('[ng-click]');

…或…

$('#myParent > [ng-click]');

DOM API

					// IE 8+
					document.querySelector('#myParent > [ng-click]');
				

Descendants(后代元素)

找到#myParent下面所有”a”元素。

jQuery

$('#myParent A');

DOM API

					// IE 8+
					document.querySelectorAll('#myParent A');
				

Excluding Elements(排除元素)

選擇所有 <div> 元素,排除那些有”ignore”樣式類 <div> 元素。

jQuery

$('DIV').not('.ignore');

…或者…

$('DIV:not(.ignore)');

DOM API

					// IE 9+
					document.querySelectorAll('DIV:not(.ignore)');
				

Multiple Selectors(多重選擇)

選擇所有 <div> , <a><script> 元素。

jQuery

$('DIV, A, SCRIPT');

DOM API

					// IE 8+
					document.querySelectorAll('DIV, A, SCRIPT');
				

See a Pattern?

如果我們專注于選擇器的支持,并且不需要處理IE8以下的瀏覽器,我們只需用這個替代jQuery:

					window.$ = function(selector) {
					var selectorType = 'querySelectorAll';
					if (selector.indexOf('#') === 0) {
					selectorType = 'getElementById';
					selector = selector.substr(1, selector.length);
					}
					return document[selectorType](selector);
					};
				

But I Want More!

對于絕大多數 項目中,選擇器支持到Web API就足夠了。但是,如果你不幸需要支持IE7?在這種情況下,你可能需要一些第三方的代碼來提供一些幫助。

當然,你僅僅需要引入jQuery,但當你只需要支持現在先進的選擇器時,為什么用這么大的代碼庫呢?相反,嘗試一下micro-library(微小的庫)完全專注于元素選擇。考慮, Sizzle ,這恰好是jQuery使用的選擇庫。 Selectivizr 是另一種非常小的選擇庫,在很老的瀏覽器上也能支持CSS3選擇器。

Next

下一篇:操作DOM元素,敬請期待!

本文被轉載1次

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

隨意打賞

提交建議
微信掃一掃,分享給好友吧。
主站蜘蛛池模板: 天津电机维修|水泵维修-天津晟佳机电设备有限公司 | 鼓风干燥箱_真空烘箱_高温干燥箱_恒温培养箱-上海笃特科学仪器 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 酒精检测棒,数显温湿度计,酒安酒精测试仪,酒精检测仪,呼气式酒精检测仪-郑州欧诺仪器有限公司 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | 闪蒸干燥机-喷雾干燥机-带式干燥机-桨叶干燥机-[常州佳一干燥设备] | 泥沙分离_泥沙分离设备_泥砂分离机_洛阳隆中重工机械有限公司 | 数字展示在线_数字展示行业门户网站 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 万濠投影仪_瑞士TRIMOS高度仪_尼康投影仪V12BDC|量子仪器 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 游戏版号转让_游戏资质出售_游戏公司转让-【八九买卖网】 | 线材成型机,线材折弯机,线材成型机厂家,贝朗自动化设备有限公司1 | 压砖机、液压制砖机、静压砖机、环保砖机生产厂家—杜甫机械 | 首页_欧瑞传动官方网站--主营变频器、伺服系统、新能源、软起动器、PLC、HMI | 铝单板_铝窗花_铝单板厂家_氟碳包柱铝单板批发价格-佛山科阳金属 | 湖南自考_湖南自学考试 | 液压升降平台_剪叉式液压/导轨式升降机_传菜机定做「宁波日腾升降机厂家」 | 一点车讯-汽车网站,每天一点最新车讯! | 厂房出租-厂房规划-食品技术-厂房设计-厂房装修-建筑施工-设备供应-设备求购-龙爪豆食品行业平台 | 井式炉-台车式回火炉-丹阳市电炉厂有限公司 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 陶瓷加热器,履带式加热器-吴江市兴达电热设备厂 | 分光色差仪,测色仪,反透射灯箱,爱色丽分光光度仪,美能达色差仪维修_苏州欣美和仪器有限公司 | 烟台条码打印机_烟台条码扫描器_烟台碳带_烟台数据采集终端_烟台斑马打印机-金鹏电子-金鹏电子 | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 阜阳成人高考_阜阳成考报名时间_安徽省成人高考网 | 科箭WMS仓库管理软件-TMS物流管理系统-科箭SaaS云服务 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 直线模组_滚珠丝杆滑台_模组滑台厂家_万里疆科技 | 创富网-B2B网站|供求信息网|b2b平台|专业电子商务网站 | 锂电池生产厂家-电动自行车航模无人机锂电池定制-世豹新能源 | 展厅装修公司|企业展厅设计|展厅制作|展厅搭建—广州展厅装饰公司 | 【ph计】|在线ph计|工业ph计|ph计厂家|ph计价格|酸度计生产厂家_武汉吉尔德科技有限公司 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 海南在线 海南一家 | 河南15年专业网站建设制作设计,做网站就找郑州启凡网络公司 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 四川成都干燥设备_回转筒干燥机_脉冲除尘器_输送设备_热风炉_成都川工星科机电设备有限公司 | 微型驱动系统解决方案-深圳市兆威机电股份有限公司 |