首先要认识到,当您调用$(this)
时,jQuery至少会执行一些函数调用和内存分配。所以你真的想缓存结果并重用它。
的第二件事情是,find
必须做的工作,所以,再一次,缓存结果:
var branch = $(this).closest('.branch');
var fcolor = branch.find('input[name="fcolor"]:checked').val();
var bcolor = branch.find('input[name="bcolor"]:checked').val();
var sidec = branch.find('input[name="sidec"]:checked').val();
var linec = branch.find('input[name="linec"]:checked').val();
没有,还是有一些重复出现;你可以创建一个“让我的复选框匹配X的值”功能:
function getCheckedValue(ancestor, name) {
return ancestor.find('input[name=' + name + ']:checked').val();
}
那么接下来:
var branch = $(this).closest('.branch');
var fcolor = getCheckedValue(branch, 'fcolor');
var bcolor = getCheckedValue(branch, 'bcolor');
var sidec = getCheckedValue(branch, 'sidec');
var linec = getCheckedValue(branch, 'linec');
然后,如果你真的想要,就能得到成一个列表这些名称和循环,在这一点上取决于你的情况,这可能是完全合理的,或者它可能是你不需要的复杂性。