'#ffccaa'
yerine css renkleri için 0xffccaa
biçimini kullanmamı sağlayan çok basit bir eklenti yazdım (çoğunlukla tırnak yazmayı önlemek için), ayrıca renklerin kolayca değiştirilmesine izin vermek için bir tamsayı olarak).Eklentiden jQuery.css nasıl genişletilir
$().xcss({})
olarak yapıyorum, ancak yalnızca $().css({})
'u kullanmayı tercih ediyorum.
$.fn.css
işlevinin işlevselliğini nasıl uzatabilirim ve dikkat etmem gereken herhangi bir tuzak var mı?
Ayrıca, sanırım $.animate
için aynısını yapmak istiyorum.
Fiddle: keyfi fonksiyonlar için kanca oluşturmak için bu kod dayanarak 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>')
Bu harika çalışıyor. Soruyu göndermeden önce bunu denediğimi sandım, ama $ .fn.css değişkenini bir değişkende sakladığımda, sadece bir referansı saklıyordu - ki bu da üzerine yazılan işlevin bir referansı oldu. Ben this._css (opts) ile çağırıyordum ama hatalar alıyordum. 'Uygula' ile olan biteni tam olarak anlamadım ama harika çalışıyor - teşekkürler bir demet. –
Eğer bir jquery guru;) –
Yakın bile korkarım Korkarım ki, ama nazik sözlerin için teşekkürler. Sorunu çözdüğüne sevindim. –