是因為jQuery沒有將事件綁定到指定的物件上所產生的
所以加上了檢查Html元素是否存在的邏輯:
if($("#obj") != null){...}
可是結果還是一樣,括弧內的邏輯一定會執行到.
打開debugger檢查之後,發現Jquery使用了Null Object
就是即使找不到元素,JQuery還是會回傳一個空的JQuery物件.
讓對物件的操作不會因為null reference而產生錯誤.
但是Null Object的缺點就是,如果其他程式設計師不知道使用了Null Object,
就會寫出錯誤的檢查...像我一樣.
所以這裡應該檢查元素的length屬性,如果是空值的話就會傳回0:
if($("#obj").length > 0){...}
由於javascript的boolean判斷會將0判斷成false,1以上的值判斷成true,
所以也可以這樣寫:
if($("#obj").length){...}
參考文章:http://www.aaronrussell.co.uk/blog/check-if-an-element-exists-using-jquery/
同場加映:
於內嵌的PDF IFrame讀取時使用jquery.blockUI:
$(function() { var iframe = $("#PDFiframe"); if(iframe.length){ //ie在綁定Iframe事件的時候會產生錯誤,必須要用windows.frames[]來取得iframe //另外如果直接用jquery接frames物件的話,於判斷length時一定會傳回true... if($.browser.msie){ iframe = $(frames["PDFiframe"]); } $.blockUI(); iframe.load(function() { $.unblockUI(); }); } });
No comments:
Post a Comment