卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

jquery選擇不存在的元素如何做到不報錯的?

網(wǎng)友解答: 剛好這個月在看jquery源碼,要回答這個問題,當(dāng)然要從jquery源碼來看了;在這兒,使用的是jquery 2.0.3的版本源碼進(jìn)行說明;如,我們使用jquery去查找一個

網(wǎng)友解答:

剛好這個月在看jquery源碼,要回答這個問題,當(dāng)然要從jquery源碼來看了;

在這兒,使用的是jquery 2.0.3的版本源碼進(jìn)行說明;如,我們使用jquery去查找一個頁面不存在的元素$('#test')元素,看下源碼具體走了哪些;在這兒就不一步一步進(jìn)行源碼分析,只是進(jìn)行簡單說明;

通過下圖代碼可以看出,調(diào)用$('#test')時,會走jquery.fn.init函數(shù);然后我們?nèi)タ聪麓撕瘮?shù);

由于函數(shù)代碼量過多,就不截圖;簡單說下,此函數(shù)會對傳入的“selector”進(jìn)行分類及各種情況處理;而這兒我們就看是id為test情況;首先它會通過下圖判斷

然后,會通過一個正則“match = rquickExpr.exec( selector );”進(jìn)行匹配,匹配"#test"結(jié)果match如下:

然后會走原生方法document.getElementById方法:

因為頁面本來沒有此元素,所以會直接返回空(null),最后會走下圖代碼,返回最終結(jié)果由上圖代碼可知,即使返回結(jié)果為空,它也會返回一個jquery對象,里面包含context、selector屬性,還有繼承的jquery全局方法,結(jié)果如下圖:所以,如果你即使查找一個沒有的元素,它也會返回一個jquery對象,你也可以直接使用對象中所有的jquery全局方法;

上面只是用id的簡單的方式,如果是類、標(biāo)簽、css等其他復(fù)雜的進(jìn)行查找時,jquery會根據(jù)類型和瀏覽器的版本不同,使用不同的方式進(jìn)行查找,但最終返回結(jié)果都差不多,而且即使沒有,都會返回一個jquery對象;

標(biāo)簽: