编程语言
首页 > 编程语言> > 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 "";
}

标签:this,internet-explorer,default-value,javascript,jquery
来源: https://codeday.me/bug/20191210/2100590.html