J'ai 3 fonctions qui sont toutes définies avec des événements de clic qui déclenchent les mêmes fonctions dans leurs divisions respectives. Je voudrais optimiser cela afin que je ne me répète pas encore et encore. Quelle serait la meilleure façon d'écrire cela?Meilleure façon d'optimiser et de fusionner ces fonctions Jquery
//Progress Bar animation when tab clicked
$('#tab1').click(function() {
$('#stack .progress div').each(function() {
var display = $(this),
currentValue = parseInt(display.text()),
nextValue = $(this).attr('data-values'),
diff = nextValue - currentValue,
step = (0 < diff ? 1 : -1);
if (nextValue == '0') {
$(display).css('padding', '0');
} else {
$(display).css('color', '#fff').animate({
'width': nextValue + '%'
}, 'slow');
}
for (var i = 0; i < Math.abs(diff); ++i) {
setTimeout(function() {
currentValue += step
display.html(currentValue + '%');
}, 20 * i);
}
})
});
$('#tab2').click(function() {
$('#design .progress div').each(function() {
var display = $(this),
currentValue = parseInt(display.text()),
nextValue = $(this).attr('data-values'),
diff = nextValue - currentValue,
step = (0 < diff ? 1 : -1);
if (nextValue == '0') {
$(display).css('padding', '0');
} else {
$(display).css('color', '#fff').animate({
'width': nextValue + '%'
}, 'slow');
}
for (var i = 0; i < Math.abs(diff); ++i) {
setTimeout(function() {
currentValue += step
display.html(currentValue + '%');
}, 20 * i);
}
})
});
$('#tab3').click(function() {
$('#other .progress div').each(function() {
var display = $(this),
currentValue = parseInt(display.text()),
nextValue = $(this).attr('data-values'),
diff = nextValue - currentValue,
step = (0 < diff ? 1 : -1);
if (nextValue == '0') {
$(display).css('padding', '0');
} else {
$(display).css('color', '#fff').animate({
'width': nextValue + '%'
}, 'slow');
}
for (var i = 0; i < Math.abs(diff); ++i) {
setTimeout(function() {
currentValue += step
display.html(currentValue + '%');
}, 20 * i);
}
})
});
Cela génère l'erreur suivante "Uncaught TypeError: Impossible de lire la propriété 'appel' de non défini" –
mon erreur! corrigé juste maintenant. – ykaragol
Bien que je savais qu'il y avait plusieurs façons de faire ce que je voulais, cela semblait le rendre bien coupé et ne nécessitait pas l'ajout de balises de type supplémentaires sur ma vue. Je vous remercie! –