jQuery中有一個disabled屬性,可以用來使頁面元素變?yōu)椴豢捎脿顟B(tài)。但是有時候我們會發(fā)現(xiàn)使用這個屬性時并沒有起到效果,即使加上了disabled屬性,該元素仍然可以被點擊或輸入內容。下面我們來探討一下這個問題。
// 示例代碼 // script中添加disabled屬性 $('#input').prop('disabled', true);
一般來說,我們用jQuery來操作DOM元素時,可以通過.prop()或者.attr()方法來改變元素的屬性。但是使用disabled屬性時,如果這個元素之前被綁定了事件,那么在改變disabled屬性后,事件仍然會起作用。
舉個例子,如果一個button元素綁定了click事件,在該事件被調用時將input元素的disabled屬性變?yōu)閒alse。那么,即使我們在代碼中將input元素的disabled屬性設置為true,只要點擊了button元素,該input元素的disabled屬性就會被還原為false。
// 示例代碼 $('#button').click(function() { $('#input').prop('disabled', false); });
解決這個問題的方法是在改變disabled屬性之前,先解除該元素上的所有事件綁定,再通過.prop()或者.attr()方法來改變屬性。如下所示:
// 示例代碼 $('#input').off().prop('disabled', true);
以上代碼先使用了off()方法,將input元素上所有事件的綁定全部解除,然后使用prop()方法將disabled屬性改變?yōu)閠rue,從而保證了該元素的不可用狀態(tài)被正確應用。