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