Uno dei principali punti di forza di jQuery è che è così pluggable, quindi se avete un bisogno che non è immediatamente soddisfatto dalla libreria , c'è un vasto panorama di plugin da cercare. E se non c'è nessuno che fa quello che vuoi, è davvero facile far girare il tuo.
Penso che il modo giusto per andare qui, se non riesci a trovare un plugin che fa quello che vuoi, è l'ultimo: scrivere il tuo.
Tuttavia, assicurarsi di essere chiari con le specifiche del proprio plug-in. Cosa dovrebbe restituire se l'elemento non ha impostazioni CSS per il riempimento? Dovrebbe restituire lo stile su questo elemento, o lo stile calcolato? Cosa succede per i css non validi (ad esempio 'padding-top: 10 unitsThatDontExist;' o 'padding-left: two;')?
Per get you started - questo è ciò che utilizzando il proprio plug-in potrebbe apparire come nel codice:
var topPadding = $('#anElement').padding('top');
per far sì che a disposizione, basta scrivere un plugin come questo:
$.fn.padding(direction) {
// calculate the values you need, using a switch statement
// or some other clever solution you figure out
// this now contains a wrapped set with the element you apply the
// function on, and direction should be one of the four strings 'top',
// 'right', 'left' or 'bottom'
// That means you could probably do something like (pseudo code):
var intPart = this.css('padding-' + direction).getIntegerPart();
var unit = this.css('padding-' + direction).getUnit();
switch (unit)
{
case 'px':
return intPart;
case 'em':
return ConvertEmToPx(intPart)
default:
// Do whatever you feel good about as default action
// Just make sure you return a value on each code path
}
};
fonte
2010-07-19 07:14:58
parseInt (this.css ("padding -" + direzione)) verrà convertito in un intero. – Psytronic
No, non è così. E "questo" dovrebbe essere avvolto tra due. – Somebody
@Psytronic, OK - bello sapere! =) Tuttavia, ho deliberatamente non scritto tutto il codice in questo plugin, in modo da rendere l'OP necessario per lavorarne un po 'e non solo il copia-incolla. È un modo molto migliore per imparare;) –