最近在項(xiàng)目中遇到一個(gè)問題,即使用jquery設(shè)置disabled屬性無效的情況。經(jīng)過一番調(diào)查和嘗試,終于找到了原因以及解決方法。
首先,我們來看一下使用jquery設(shè)置disabled屬性的代碼:
$("#input-id").prop("disabled", true);
一般情況下,這樣的代碼是可以有效地將目標(biāo)元素設(shè)置為不可用狀態(tài)的。但是,在某些情況下,我們會(huì)發(fā)現(xiàn)這樣的設(shè)置根本沒有起到作用。
造成這種情況的原因是,如果目標(biāo)元素在設(shè)置之前就已經(jīng)被禁用了,那么使用jquery仍然設(shè)置disabled屬性是無效的。這是因?yàn)椋O(shè)置disabled屬性的本質(zhì)是改變?cè)氐臓顟B(tài),而如果元素在之前已經(jīng)被禁用了,那么元素的狀態(tài)已經(jīng)被鎖定,無法再進(jìn)行更改。
解決這個(gè)問題的方法很簡(jiǎn)單,只需要在設(shè)置disabled屬性之前,先判斷一下目標(biāo)元素的狀態(tài)即可。代碼如下:
if(!$("#input-id").is(':disabled')){ $("#input-id").prop("disabled", true); }
這樣就可以有效地將目標(biāo)元素設(shè)置為不可用狀態(tài)了。
總之,我們?cè)诰帉懘a時(shí),要注意元素的狀態(tài)對(duì)于屬性的設(shè)置是否有影響,盡量避免無效的屬性設(shè)置。