jQuery的selector極度的強大,但是當你在做複雜的語法查詢時,有很多時刻都會誤踩地雷。舉例來說,你隨便下個alert($("#NonExistDIV"));指令,儘管你的網頁中根本沒有這個DIV id,但是alert還是會彈出一個「[object Object]」的空集合jQuery物件,除非你再繼續下「$("#NonExistDIV")[0]」或「$("#NonExistDIV").get(0)」進行接續的求證,不然現階段你是沒有方法得知是不是有真正的select到DOM元素的。
今天就是因為一直覺得自己有正確的選到DOM元素,小鬼打牆了一段時間,一怒之下上網找了解決方案,解決的辦法很簡單,只要使用下列判斷式即可。
if ($("#NonExistDIV").length !== 0) { alert("有找到DOM元素"); } else { alert("沒找到DOM元素"); }
與其在那邊罵jQuery為何不把它實作成一個方法的話,或許你可以選擇自己寫一個小外掛套件。
//判斷是否selector有選到DOM元素Plug-in $.fn.exists = function() { return this.length !== 0; } //實現方法 alert($("#NonExistDIV").exists()); //傳回false alert($("#ExistDIV").exists()); //傳回truejQuery Selector NullObject PlugIn