首页 > 解决方案 > jQuery 将元素的类保存在静态变量中并重用

问题描述

假设我有一个包含多个类的元素:<div id='foo' class='Test1 Test2 Test3'>foo</div>

以及在每个 keyup 事件上执行的脚本:

$('#foo').on('keyup', function() {
     // Do something here that changes the classes
});

我怎样才能在初始 keyup 之前捕获这个元素的初始类(并且只有第一个初始更改),将它们存储在一个变量中,然后将它们重新应用到这个元素?

我考虑过使用全局静态变量,但我相信那里有更好的解决方案。

标签: javascriptjqueryhtmlclass

解决方案


如果该属性未初始化,则将元素的类保存到数据属性。

否则,从该数据属性恢复元素的类:

$('#foo').on('keyup', function() {
  if(!$(this).data('classes')) {
    $(this).data('classes', $(this).attr('class'));  //store initial state
  } else {
    $(this).attr('class', $(this).data('classes'));  //restore initial state
  }
});

推荐阅读