我正在用jQuery重写一些旧的JavaScript,并想知道如何更清晰地编写它。
我开始使用的脚本是:
for (var i = 0; i < form1.elements.length; i++) {
var element = form1.elements[i];
alert(element.id)
if (Left(element.id, 15) === 'selHeaderFilter' ||
element.id === 'ddlHierarchy1') {
garrHeaderState[element.id] = element.selectedIndex
}
}
我不确定为什么它被写成了,但我认为它只是试图将2个元素添加到一个数组(全局声明)。
我对此的第一次尝试给了我:
var hierarchy = $('[id$=ddlHierarchy1]');
var headerFilter = $('[id*="selHeaderFilter"]');
if (hierarchy)
garrHeaderState[hierarchy.attr('id')] = hierarchy.val();
if (headerFilter)
garrHeaderState[headerFilter.attr('id')] = headerFilter.val();
但我真的不喜欢声明层次结构的过程,只要它存在,我就可以将其选择的索引添加到数组中。有没有更好的方法来编写这段代码?
答案 0 :(得分:4)
你可以使用jQuery的每个函数。
$('[id$=ddlHierarchy1], [id*="selHeaderFilter"]').each(function(){
var item = $(this);
garrHeaderState[item.attr('id')] = item.val();
});
答案 1 :(得分:1)
未测试:
$('[id$=ddlHierarchy1], [id*="selHeaderFilter"]').each(function(){
garrHeaderState[this.id] = $(this).val();
})
编辑:根据其他帖子的编辑进行更新,以避免缓存和重复运行jQuery函数