He escrito un complemento muy simple que me permite usar el formato 0xffccaa
para colores css en lugar de '#ffccaa'
(sobre todo para evitar escribir comillas, pero también para permitir una fácil modificación de colores simplemente añadiendo es un número entero).Cómo extender jQuery.css desde el complemento
Estoy implementando como $().xcss({})
, pero preferiría simplemente usar $().css({})
.
¿Cómo puedo extender la funcionalidad de la función $.fn.css
, y hay algún error que debo tener en cuenta?
Además, supongo que querré hacer lo mismo con $.animate
.
violín: http://jsfiddle.net/hB4R8/
// pugin wrapper
(function($){ $.fn.xcss = function(opts){
// loop through css color properties
$.each(['background', 'backgroundColor','background-color', 'color', 'borderColor','border-color'],function(i,v){
// if set as number (will be integer - not hex at this point)
// convert the value to `#ffccaa` format (adds padding if needed)
if(typeof opts[v] === 'number')
opts[v] = ('00000'+opts[v].toString(16)).replace(/.*([a-f\d]{6})$/,'#$1')
})
// run css funciton with modified options
this.css(opts)
// allow chaining
return this
} })(jQuery)
// test the plugin
$('body').xcss({
'background-color': 0xffccFF,
color: 0xccffcc,
border: '3px solid red',
borderColor:0x0ccaa,
padding:50
}).html('<h1>This should be a funny color</h1>')
Eso funciona genial. Pensé que había intentado esto antes de publicar la pregunta, pero cuando almacené $ .fn.css en una variable, solo estaba almacenando una referencia, que se convirtió en una referencia a la función sobrescrita. Estaba llamando con 'this._css (opts)' pero obteniendo errores. No entiendo completamente qué está pasando con 'apply', pero funciona muy bien, muchas gracias. –
eres un jquery guru;) –
Ni siquiera cerca Temo, pero gracias por las amables palabras. Me alegra que hayas resuelto tu problema. –