jquery .css() won't set multiple properties programmatically -
this works:
var property1 = "width"; $('.button1').on("click", function(){ $('.greenbox').css(property1, "200px"); });
but doesn't:
var property1 = "width"; var property2 = "border-top"; $('.button2').on("click", function(){ $('.greenbox').css({ property1: "50px", property2: "50px" }); });
why? , what's easiest, fastest, slickest. cross-browserest way set unknown quantity of multiple (unknown) properties? know values, don't know properties. :)
in javascript when constructing object can define keys strings.. meaning values in property1
, property2
not passed.. instead strings 'property1' , 'property2' passed..
to overcome this, create object in advanced, pass whole: (working jsfiddle)
var cssobj = {}; cssobj[property1] = '50px'; cssobj[property2] = '50px'; $('.greenbox').css(cssobj);
edit:
i couldn't find in docs me case this:
when use following notation: {key1:value1, key2:value2}
javascript parses keys names, , though there's variable same name defined javascript not passing value name - how built - keys cannot passed variables.
using cssobj[peroperty1]
works because we're treating object associative array - , assigning key variable allowed in way.
Comments
Post a Comment