日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

querySelector用法改进

發布時間:2025/5/22 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 querySelector用法改进 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原來選擇器只支持一個上下文,并對IE8的BUG進行了規避

if (!flag_xml && doc.querySelectorAll) {//FF,opera,chrome,safari的XML文檔也實現了querySelectorAll接口,但不能用var query = expr;//IE的getElementsByTagName,querySelectorAll對OBJECT元素的孩子的查找都存在問題if( doc.documentMode === 8 && context.nodeType === 1 && context.nodeName.toLowerCase() !== "object"){var id = context.getAttribute( "id" ),uid = context.uniqueID//IE8在上下文為元素節時,搜索結果包含自己if ( !id ) {context.setAttribute( "id", uid );}try {return pushResult(context.querySelectorAll( "#" + uid + " " + query ),result,flag_multi);} catch(e) {} finally {if ( id == context.uniqueID ) {context.removeAttribute( "id" );}}}else{if(/\!\=/.test(query))//手動支持 E[Attr!=Val]query = query.replace(/\[\s*(\w+)\s*!=\s*((['"]*).*?\3)\s*\]/g,":not([$1=$2])");try {return pushResult( context.querySelectorAll(query) ,result,flag_multi);} catch(e) {}}}

改進如下,現在只需規避IE的OBJECT bug。

if (!flag_xml && doc.querySelectorAll) {//http://www.w3.org/TR/selectors/node = context;//使用替身,以便在多上下文實現不重排查找var useContains = false;if(contexts.length > 2 || doc.documentMode === 8 && context.nodeType === 1){node = doc;useContains = true;}if(doc.documentMode !== 8 || node.nodeName.toLowerCase() !== "object"){try{nodes = pushResult( node.querySelectorAll(expr) ,result,flag_multi);var ret = []if(useContains && nodes.length){var cn = contexts.length;for(i = 0, ri = 0; i < nodes.length; i++){inner:for(var c = 0; c < cn; c++){if(dom.contains(contexts[c], nodes[i])){ret.push(nodes[i])break inner;}}}return ret;}return result;}catch(e){}}}

另一種改進是,通過對元素節點的上下文添加一個類名,這樣查找就可以一步到位。不足之處就是前前后后要對類進行操作。

if (!flag_xml && doc.querySelectorAll) {var query = expr;if(contexts.length > 2 || doc.documentMode == 8 && context.nodeType == 1 ){if(contexts.length > 2 )context = doc;query = ".fix_icarus_sqa "+query;//IE8也要使用類名確保查找范圍for(i = 0; node = contexts[i++];){if(node.nodeType === 1){node.className = "fix_icarus_sqa " + node.className;}}}if(doc.documentMode !== 8 || context.nodeName.toLowerCase() !== "object"){try{result = pushResult( context.querySelectorAll(query) ,result,flag_multi);if(query.indexOf(".fix_icarus_sqa") === 0 ){//如果為上下文添加了類名,就要去類名for(i = 0; node = contexts[i++];){if(node.nodeType === 1){node.className = node.className.replace(" fix_icarus_sqa","");}}}return result;}catch(e){}}}

但顯然對類進行操作對調用dom.contains快捷得多了。

總結

以上是生活随笔為你收集整理的querySelector用法改进的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 强videoshd酒醉 | 欧洲免费毛片 | 91精品国产乱码久久久张津瑜 | 激情五月婷婷网 | 高潮videossex高潮 | 免费在线观看一区二区三区 | 黄色污污网站 | 麻豆伦理片 | 91精品啪在线观看国产 | 亚洲欧美色视频 | 伊人伊色 | 在线观看亚洲精品 | 色眯眯视频 | 亚洲男人天堂2017 | 天天做天天看 | 无码人妻精品一区二区蜜桃色欲 | 一级黄毛片 | 欲乱美女 | 象人高潮调教丨vk | 精品人妻码一区二区三区红楼视频 | 中文在线字幕免费观 | av之家在线 | 国产丝袜一区二区三区 | 色婷婷av国产精品 | 亚洲香蕉网站 | 欧美老少做受xxxx高潮 | 亚洲黄色影视 | 东京热无码av一区二区 | 日本黄色片在线播放 | 日韩国产在线一区 | 天天干天天插天天射 | 成人在线观 | 俺啪也 | 高清日韩一区 | 久久精品男人 | 狠狠五月婷婷 | 亚洲精品丝袜 | 男女视频在线观看免费 | 欧美日韩国产在线一区 | 国产精品无圣光 | 天天操天天干天天爱 | 久久久久久亚洲 | 久久国产精品影视 | 禁断介护老人中文字幕 | 9191在线视频| 九九九精品视频 | 99热日本 | 国产精品自偷自拍 | 日本少妇高潮喷水xxxxxxx | 亚洲视频免费在线播放 | 有码视频在线观看 | 夜夜爽妓女8888视频免费观看 | 五月激情四射网 | 国产一区二区三区日韩 | 久久综合国产精品 | 四虎影成人精品a片 | eeuss鲁片一区二区三区在线观看 | 日批视频免费在线观看 | 精品人伦一区二区 | 一区免费 | 日本精品视频一区二区三区 | 国产成人在线视频免费观看 | 亚洲aa| 午夜日韩视频 | 天天透天天操 | 久久在线精品 | 国产又粗又黄又猛 | 97在线免费观看 | 天天爽夜夜操 | 国产精品视频久久久 | 亚洲一区有码 | 中文字幕人妻无码系列第三区 | 初尝黑人巨炮波多野结衣 | 天天视频色 | 成人tv | 一级片小视频 | 麻豆精品av| 国产日韩欧美另类 | 黄色一级小视频 | 欧美色xxx | 日本极品丰满ⅹxxxhd | 男人天堂综合 | 一区二区三区国 | 91精品专区 | 国产女主播一区 | 性xxxx狂欢老少配o | 国产乱码精品1区2区3区 | 国产精品一品二品 | 美女隐私免费看 | 毛片成人网 | 91丝袜国产在线观看 | 亚洲精品视频在线观看免费 | 欧美成人怡红院 | 久久黄色免费视频 | 少妇高潮灌满白浆毛片免费看 | 另类视频一区 | 超碰人人草| 爱爱免费网址 | 99久久久国产 |