在開發中,我們有時需要禁用較多的表單元素,例如按鈕、輸入框等。這時我們會用到 jQuery 中的prop()
方法來設置他們的 disabled 屬性。然而,有時我們會發現這種方法失效了,那么問題出在哪里呢?
$('#myButton').prop('disabled', true);
一種常見的情況是在 DOM 元素動態改變時。例如,當頁面中的表格行被動態添加或刪除時,這些元素的 disabled 屬性會在這個過程中失去作用。這是因為新添加的元素是沒有被綁定事件的,因此也就不能被更新。
解決方法就是使用委托事件。這樣動態添加的元素也會被更新到。
$('table').on('click', '#myButton', function() {
$(this).prop('disabled', true);
});
還有一種情況是當使用其他插件時,例如 bootstrap datetimepicker 插件,這些插件會覆蓋元素的 disabled 屬性。這時我們需要尋找插件本身提供的方法來禁用元素,例如:
$('#datepicker').data("DateTimePicker").disable();
在使用 jQuery 中的 disabled 屬性時,我們需要注意以上幾點,以免遇到無法解決的問題。