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

xすでにJSONを渡している場合は、 andなどをいじくり回す代わりにx_new、これを実行してみませんか。

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

@Somkittensが提案したことに完全に同意します。なぜx_new:y_newうまくいかなかったのかを簡単に説明したいと思います。

jquery関数では.css()、キー/プロパティは解析または変数として扱われないため、$('dom').css('width': '100px')またはを入れ$('dom').css(width: '100px')ても違いはありません。ハイフンが含まれている場合に備えて、プロパティを引用符で囲みます。つまり、border-radius、-webkit-border-radiusなどです。

しかし、それでもソリューションを使いたい場合は、@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_arrcssスタイルのオブジェクトです。に直接渡すことができます.css()
例:$(container_elm).css(css_arr);

提案:に変更css_arrstyleます。

デモ

于 2012-08-02T17:28:54.977 に答える