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;
};