3

1)这工作正常:

$(container_elm).css({
  'border-width':'1px'
})

2)现在我正在尝试将 css propertyName : value 作为参数传递给函数:

function my_func(css_arr) {
  if (css_arr!==null && css_arr!=='') {
    for(var x in css_arr) {
      if(css_arr.hasOwnProperty(x)) {
        y=css_arr[x];
        x_new='"'+x+'"';
        y_new='"'+y+'"';

        $(container_elm).css({
            //'border-width':'1px' // this works
            //x:y // this does NOT work
            //x_new:y_new // this does NOT work
        });
        //console.log(x_new, y_new); //returns "border-width" "1px"
        //console.log(x, y); //returns border-width 1px
      }
    }
  }
}

//usage
my_func({'border-width':'1px'});

关于如何传递 css 对象“propertyName:value”并使 .css() 接收并工作的任何想法?

先感谢您。

编辑:演示 - http://jsfiddle.net/BRwzF/5/

4

3 回答 3

2

如果您已经在传递 JSON,而不是使用xandx_new等,为什么不这样做:

$(container_elm).css(
    css_arr
);
于 2012-08-02T17:21:46.133 回答
1

我完全同意@Somkittens 的建议。只是想向您简要介绍一下为什么x_new:y_new不适合您。

.css()jquery 函数中,键/属性不会被解析或视为变量,因此 put $('dom').css('width': '100px')or$('dom').css(width: '100px')没有任何区别。我们将属性用引号括起来,以防其中包含连字符。即边界半径,-webkit-边界半径等。

但是,如果您想使用您的解决方案,在这种情况下,您可以稍微调整一下代码,这与@SomeKittens 的作用相同

 y=css_arr[x];
 x_new=x;
 y_new=y;
 var foobar = {};
     foobar[x_new] = y_new;
 $(container_elm).css(foobar);

演示:http: //jsfiddle.net/4tBVH/

于 2012-08-02T17:41:46.717 回答
0

你不需for要这样做。
css_arr是具有 css 样式的对象。您可以将其直接传递给.css().
例子:$(container_elm).css(css_arr);

建议css_arr改为style.

演示

于 2012-08-02T17:28:54.977 回答