首先要認識到,當您調用$(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');
然後,如果你真的想要,就能得到成一個列表這些名稱和循環,在這一點上取決於你的情況,這可能是完全合理的,或者它可能是你不需要的複雜性。