Sto lavorando per convertire il mio semplice grafico ad albero di JavaScript in un jQuery Plugin.Aggiornare il plug-in jQuery per creare HTML e impedirne la ricostruzione su più chiamate
E 'il mio primo plugin jQuery e potrei usare un certo aiuto in un luogo paio prega ...
demo di quello che ho finora: http://jsfiddle.net/jasondavis/qsgqebox/
riportano di seguito le JavaScript che ho finora.
jQuery
jQuery.fn.updatePercentageGraph = function (options) {
var settings = $.extend({
// These are the defaults.
percent: 0,
}, options);
var percent = settings.percent;
if(typeof percent === 'undefined') {
var percent = parseInt(this.data('percent'));
}else{
if(percent === '') {
var percent = parseInt(this.data('percent'));
}else{
var percent = parseInt(percent);
this.attr('data-percent', percent);
}
}
var deg = 360*percent/100;
if (percent > 50) {
this.addClass('gt-50');
}else{
this.removeClass('gt-50');
}
$('.ppc-progress-fill').css('transform','rotate('+ deg +'deg)');
$('.ppc-percents span').html(percent+'%');
};
Usage:
$('#project_progress2').updatePercentageGraph(34);
Che cosa ho bisogno di aiuto con:
1)
Attualmente richiedono all'utente di impostare il codice HTML in questo modo:
<div id="project_progress" class="progress-pie-chart" data-percent="40">
<div class="ppc-progress">
<div class="ppc-progress-fill4" style="transform: rotate(136.8deg);"></div>
</div>
<div class="ppc-percents4">
<div class="pcc-percents-wrapper">
<span>40%</span>
</div>
</div>
</div>
Quello che voglio fare è però farlo dove si può semplicemente fare qualcosa di simile ....
<div id="project_progress" class="progress-pie-chart" data-percent="40"></div>
e il plugin jQuery crea automaticamente i nodi figlio appropriati.
La jQuery parte sarebbe auto create:
<div class="ppc-progress">
<div class="ppc-progress-fill4" style="transform: rotate(136.8deg);"></div>
</div>
<div class="ppc-percents4">
<div class="pcc-percents-wrapper">
<span>40%</span>
</div>
</div>
2) aggiornare alcuni selettori per consentire a più grafici ad anello a pagina
Un altro problema nel plugin finora è il 3a e 4a riga dalla parte inferiore del codice JavaScript mostrato sopra. Si chiama $('.ppc-progress-fill')
e $('.ppc-percents span')
che impedirebbe l'utilizzo di più grafici sulla pagina, quindi è necessario aggiornarli per scegliere come target solo la classe presente nel grafico corrente.
3) Ottimizzare per evitare che la struttura HTML di essere ricreata ogni volta che la funzione viene chiamata per aggiornare il valore percentuale
Se converto questo plugin per auto-generare la struttura HTML, quindi devo anche considerare di ottimizzarlo in modo che non debba continuare a rigenerare la struttura più e più volte ogni volta che viene eseguito il codice che chiamerà $('#project_progress2').updatePercentageGraph(34);
perché nel mio progetto dove userò questo, questi grafici saranno costantemente aggiorni lì valori percentuali.
Forse potrebbe anche essere meglio avere una funzione che crea l'HTML del grafico iniziale e quindi una seconda funzione che può essere chiamata ripetutamente e ripetutamente che gestisce solo l'aggiornamento della percentuale e non tenterà di ricostruire e iniettare la struttura HTML più e più volte!
Questi problema che ho citato sono le aree chiave sono un po 'bloccato in questo momento e potrebbe usare un certo aiuto per favore.
JSFiddle Demo:
JSFiddle di quello che ho finora insieme ad alcuni pulsanti per testare l'aggiornamento dei valori percentuali: http://jsfiddle.net/jasondavis/qsgqebox/
Hai provato a creare un plugin jQuery di base prima? Una buona guida di partenza è questa, prima di provare molto altro: http://www.smashingmagazine.com/2011/10/11/essential-jquery-plugin-patterns/ – MyStream
@MyStream Domanda riscritta con i miei tentativi e cosa sono alle prese con – JasonDavis
Quando si crea la funzione, stabilire cosa è "questo".Se la lunghezza è> 1, probabilmente vuoi associare a ciascun oggetto a turno e prendere $ (questo) o equivalente su cui agire quando chiami la funzione, che ti aiuterà a mantenere l'ambito di qualsiasi chiamata di metodo relativa all'oggetto su quale sei azione. – MyStream