我已經不是第一次遇到像要判斷對象是否存在了,依據對象是否存在作相應的處理,好比html
var hasSomething ="0"; if(jQuery("#tid").val()){ hasSomething="1" }
以前一直沒有記錄,第二次須要這種判斷的時候就拿不許這麼寫是否正確jquery
<!DOCTYPE html> <html> <head> <script src="/jquery/jquery-1.11.1.min.js"> </script> <script> $(document).ready(function(){ $("p").click(function(){ if($("#tid").val()){ $(this).hide(); } }); }); </script> </head> <body> <input type="hidden" id="tid"> <p>若是您點擊我,我會消失。</p> <p>點擊我,我會消失。</p> <p>也要點擊我哦。</p> </body> </html>
上面的html代碼裏面進行了這種判斷,語句是chrome
if($("#tid").val()){ $(this).hide(); }
判斷的依據是tid的值是否存在瀏覽器
<input type="hidden" id="tid" value="1">
若是tid有值,且不爲空串時,會執行if塊裏面的代碼,若是僅聲明瞭id="tid" ,而沒有value屬性,或屬性是"",是不會進入if塊的ide
同理,咱們試驗一下,判斷id="tid" 的標籤是否存在的語法是測試
alert($("#tid")); if($("#tid")){ $(this).hide(); }
若是沒有聲明這個標籤,alert出來的結果是[Object Object],他並非空的this
說明jQuery進行了必定的封裝,想用這條語句是不行的,所以咱們改爲js原生的code
var tid=document.getElementById("tid"); alert(tid); if(tid){ $(this).hide(); }
這樣判斷是可行的,若是存在tid標籤會進入if塊,若是不存在,不會進去if塊htm
若是tid對應的標籤不存在,alert(tid)是null,若是存在,則是[Object HtmlInputElement]對象
在多個瀏覽器上測試:
chrome:經過
FileFox:經過
IE:經過
總結
用
if(document.getElementById("tid")){ }
判斷標籤是否存在
使用jquery的val時
if($("#tid").val()){ $(this).hide(); }
既判斷了標籤是否存在,還判斷了值,當且僅當標籤存在,且有value,且value不是""時,返回true