2011-12-23 193 views
0

我收到錯誤object property doesn't support this method當我嘗試刪除屬性時,我加載頁面。jQuery如何檢查屬性是否存在之前刪除它

但是我相信會發生這種情況,因爲在加載頁面時從未添加禁用的屬性,因爲在添加屬性後我沒有收到錯誤。

我的問題是如何在試圖刪除它之前檢查屬性是否存在。

感謝

if (jQuery.inArray($("select option:selected").val(), Codes) == -1) { 
       $(serviceSelector).hide(); 
       $(LocationSelector).hide(); 

       $("#ctl00_ctl00_body_body_ddlPool option['value=ADD']").removeAttr("disabled"); 
       $("#ctl00_ctl00_body_body_ddlPool option['value=ADM']").removeAttr("disabled"); 
      } else { 
       $(serviceSelector).show(); 
       $(LocationSelector).show(); 
       $("#ctl00_ctl00_body_body_ddlPool option[value=ADM]").attr("disabled", "disabled"); 
       $("#ctl00_ctl00_body_body_ddlPool option[value=ADD]").attr("disabled", "disabled"); 

      } 
      //$find(AcId).set_contextKey($(this).val()); 
     }).change(); 
+1

請參閱此問題: http://stackoverflow.com/questions/1318076/jquery-hasattr-checking-to-see-if-there-is-an-attribute-on-an-element – brandwaffle 2011-12-23 16:37:49

+5

你的選擇器中有語法錯誤:'option ['value = ADD']'應該是'option [value ='ADD']'(對於其他'[name ='value']'選擇器也是如此)。 – 2011-12-23 16:38:11

回答

5

可以使用.hasAttribute方法

如果你有各自的多個地址和ADM節點上,您將有測試每一個:

$("#ctl00_ctl00_body_body_ddlPool option[value='ADD']").each(function(){ 
    if(this.hasAttribute("disabled")) 
     this.removeAttribute("disabled"); 
}); 

否則僅針對實際節點進行測試

if($("#ctl00_ctl00_body_body_ddlPool option[value='ADD']")[0].hasAttribute("disabled")) 

編輯:根據安德魯的評論修正語法錯誤。

+0

他是對的 - 另外,使用像[firebug](http://www.getfirebug.com)或[開發人員工具](http://code.google.com/chrome/devtools/docs)這樣的調試控制檯確實很有幫助/overview.html#access)。控制檯是你的朋友。 – Chazbot 2011-12-23 16:43:01

+0

感謝這工作,我猜的語法是問題 – 2011-12-23 16:47:31

+0

@bugz歡迎您:)高興地幫助。 – 2011-12-23 17:07:28

相關問題