La première chose est de reconnaître que lorsque vous appelez $(this)
, jQuery fait au moins quelques appels de fonction et une allocation de mémoire. Donc, vous voulez vraiment mettre en cache le résultat et le réutiliser.
La deuxième chose est que find
doit faire un travail, donc, encore une fois, mettre en cache le résultat:
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();
Non, il y a encore quelques répéter là-bas; vous pouvez créer une fonction pour « me obtenir la valeur de la case à cocher correspondant à X »:
function getCheckedValue(ancestor, name) {
return ancestor.find('input[name=' + name + ']:checked').val();
}
Alors:
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');
Et puis, si vous voulez vraiment, vous pouvez obtenir en ayant une liste de ces noms et en passant à travers, à quel point en fonction de votre situation, il peut être parfaitement justifiable, ou ce peut être la complexité dont vous n'avez pas besoin.