JavaScript / JQuery:在变量名中使用$(this)

前端之家收集整理的这篇文章主要介绍了JavaScript / JQuery:在变量名中使用$(this) 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在编写一个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 "";
}

猜你在找的jQuery相关文章