如何将JSON数据发送到jQuery.css()函数

6
我想向jQuery.css()函数发送JSON格式的数据,但我不知道该怎么做。 之后,我将发送更多属性,这只是我的问题示例。
//Sorry, this var x is actually string that i get when i print my json string
var x = {"transform":"rotate(30deg)","-o-transform":"rotate(30deg)"}

//If i try to do something like this wont work
$("#mainImage").css(x);


//but following works
$("#mainImage").css({"transform":"rotate(30deg)","-o-transform":"rotate(30deg)"})

可能与jQuery接受.css( map )有关,这是一组要设置的属性值对。

我正在尝试发送单个文本字符串,是否可以将JSON转换为映射?

@Pekka 是的,我确定$("#mainImage").css(x);不起作用。

@Felix 这就是调用json = JSON.stringify(data);得到的结果,如果不是JSON数据,抱歉,我是JavaScript新手..


3
奇怪, $("#mainImage").css(x); 应该是有效的。你确定它不起作用吗? - Pekka
2
x 不是 JSON。它是一个 JavaScript 对象。 - Felix Kling
3个回答

3
你需要在字符串化之前解析JSON。我尝试过这种方法,它起作用了。
var json = '{ "display": "none" }';
var cssObject = JSON.parse(json);
$("#mainImage").css(cssObject);

我认为你可以使用jQuery.parseJSON()来增加一些向后兼容性;JSON.parse()仅在现代浏览器中可用。 - knb

2

我刚刚尝试了这段代码:

$(document).ready(function() {
        var x = {"background-color": "yellow"};
        $('body').css(x);
    });

基本上它是有效的。因此问题可能完全不同。也许您的img元素不存在?


是的,它在那里,我应该先解析它,这就是为什么它没有起作用。 - grizwako

0

http://jsfiddle.net/A4azg/

var cssObj = { 'background-color' : '#ddd', 'font-weight' : '', 'color' : 'red', "transform":"rotate(30deg)", "-o-transform":"rotate(30deg)", "-webkit-transform":"rotate(30deg)" } $("#mainImage").css(cssObj);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接