我正在编写一个jquery-plugin,它会更改某些用户操作上某些元素的css值.
在其他操作上,应将css值重置为其初始值.
由于找不到恢复初始css值的方法,因此我刚刚创建了一个数组,该数组将所有初始值存储在开头.
我这样做是:
var initialCSSValue = new Array()
在我的插件的开头和之后的某个设置循环中,我使用的所有元素都被访问了
initialCSSValue[$(this)] = parseInt($(this).css('<css-attribute>'));
这在Firefox中效果很好.
但是,我刚刚发现IE(甚至v8)在使用再次访问特定值时遇到问题
initialCSSValue[$(this)]
代码中的其他地方.我认为这是由于事实,我使用对象($(this))作为变量名.
有办法解决这个问题吗?
谢谢
最佳答案
使用
$(this).data()
起初,我建议使用ID和属性名称的组合,但是每个对象可能没有ID.而是使用jQuery Data函数将信息直接附加到元素上,以便轻松,唯一地访问.
执行以下操作(将< CSS-attribute>替换为css属性名称):
$(this).data('initial-<css-attribute>',parseInt( $(this).css('<css-attribute>') ) );
然后,您可以像这样再次访问它:
$(this).data('initial-<css-attribute>');
使用数据的替代方式:
如果您想避免过多的数据使用,则可以在插件中创建一些类似这样的辅助函数:
var saveCSS = function (el,css_attribute ) {
var data = $(el).data('initial-css');
if(!data) data = {};
data[css_attribute] = $(el).css(css_attribute);
$(el).data('initial-css',data);
}
var readCSS = function (el,css_attribute) {
var data = $(el).data('initial-css');
if(data && data[css_attribute])
return data[css_attribute];
else
return "";
}