微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/jquery/530976.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐