今天(周六)下午我在公司加班時(shí)不知道要干什么,就打開公司的一個(gè)wordpress項(xiàng)目網(wǎng)站,想看下之前自己做的一個(gè)網(wǎng)頁(yè)是否有問題。
打開網(wǎng)站首頁(yè),我習(xí)慣性的打開了chrome的調(diào)試工具,然后鼠標(biāo)開始滾動(dòng)頁(yè)面,然后問題就出來了:頁(yè)面無法向下滾動(dòng),調(diào)試工具的console里報(bào)了好多undefined的錯(cuò)誤。
我馬上意識(shí)到是我寫的js代碼錯(cuò)誤的在首頁(yè)被執(zhí)行導(dǎo)致的問題,我的代碼大致是這樣:
這段代碼的想要做的就是,判斷下頁(yè)面是否有某個(gè)id標(biāo)識(shí)的元素,如果有就做一些事情。網(wǎng)站首頁(yè)是應(yīng)該沒有這個(gè)元素的,不應(yīng)該執(zhí)行這個(gè)代碼。
好吧,如果你看到這里,你肯定能猜到我不是做前端的。我期望它返回一個(gè)布爾類型的false,但它實(shí)際上返回的是一個(gè)jQuery Object,
注意這里獲得的不是dom element,如果想獲得真實(shí)的dom element,可以這么寫$('#a')[0]或者$('#a').get(0)。
其實(shí)$('selector')返回的永遠(yuǎn)都是一個(gè)jQuery Object,不管它找沒找到元素。(關(guān)于這個(gè)返回值的問題請(qǐng)參考:What does jquery $ actually return? 和 How to get a DOM Element from a JQuery Selector)。
那么我該如何判斷id=a的元素是否存在呢?其實(shí)可以這么做,if ($('#a').length),如果沒有#a則返回的object其實(shí)是個(gè)空對(duì)象,可以達(dá)到目的。