Javascript 在jquery中将对象设置为attr()方法的值

Javascript 在jquery中将对象设置为attr()方法的值,javascript,jquery,Javascript,Jquery,我正在使用$.data()函数设置div的大小: function init() { comp = $("#center"); comp.data('image', { dimensions : { width : comp.width(), height : comp.height(), x0 : comp.position().left, y0 : comp.pos

我正在使用
$.data()
函数设置div的大小:

function init() {
    comp = $("#center");
    comp.data('image', {
        dimensions : {
            width : comp.width(),
            height : comp.height(),
            x0 : comp.position().left,
            y0 : comp.position().top,           
        }
    });
}
我检索的值如下所示:

var image = comp.data('image');
alert(image.dimensions.x1);

代码很好,而且也在工作。我想知道是否可以通过
$.attr()
函数执行,以及哪种方式更好。

您可以尝试使用attr(“样式”),但我更愿意使用css()进行css操作。请参见此处:

您可以像这样轻松地处理此问题:

var values = {width: '100px', height: '100px'};
$('#id-of-your-img').css(values);

下面是一个示例,其中有人添加了一个函数来创建具有一些额外特性的类似行为


你试过了吗?这显然是不可能的,因为属性只能是字符串。但是jQuery缓存可以包含非字符串值,所以这并不明显。
// dispatch to data() and attr()
$.fn.dataAttr = function(key, value) {
    var $this = this,
        ret = this.data(key, value);

    if (typeof key == "object") {
        $.each(key, function(key, value) {
            $this.attr("data-" + jQuery.uncamelCase(key), typeof value in {string:1, number:1} ? value : '~defined~');
        });
    } else if (value !== undefined) {
        $this.attr("data-" + jQuery.uncamelCase(key), typeof value in {string:1, number:1} ? value : '~defined~');
    }

    return ret;
};