国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

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

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

網(wǎng)友解答:

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

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

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

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

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

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

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

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

標(biāo)簽: