我正在試圖創建一個跟蹤窗體狀態的javascript對象。我的第一個刺是一個冗長的「程序性」的jquery解決方案,我遍歷每個表單字段,測試它是否設置爲「全部」,刪除類,或者如果它不存在,則添加它。這是一個簡短的版本:將javascript對象綁定到DOM
function activeClass() {
if(this.val() === 'All') {
$(this).parent().removeClass('active');
}
$('#content-filter select', context).foreach(function() {
if(this.val() !== 'All') {
this.addClass('active');
}
});
}
我們也在做很多其他的事情,所以代碼越來越長。我想要做的下一個方向是創建一個單獨的對象,用於跟蹤表單狀態並使用事件偵聽器更新表單狀態。
formState = {
featured: false,
all: false,
category: 'All',
topics: 'All',
audience: 'All',
date: {value: '', min: '', max: '', filter_op: '='},
};
我正在努力的部分是如何將對象綁定到DOM。我的第一個傾向是做這樣的事情:
$('select').on('change', function() {
formState[$(this).attr('id')] = $(this).val();
});
這裏的問題是,選擇的id
具有的屬性相匹配。另外,我被告知,這樣做的方法是使用getter和/或setter方法來更改這些值。我對這意味着什麼有了一些理解,但是我感到困惑的是那些如何綁定到DOM。
爲什麼使用單獨的對象跟蹤狀態,只需從DOM元素中獲取狀態即可? – Barmar
如果您想要保留元素的額外狀態,可以使用jQuery的'.data()'方法將任意數據與DOM元素相關聯。 – Barmar