Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery对象属性而不是类_Jquery_Html_Css_Events_Jquery Animate - Fatal编程技术网

jQuery对象属性而不是类

jQuery对象属性而不是类,jquery,html,css,events,jquery-animate,Jquery,Html,Css,Events,Jquery Animate,我使用此代码来防止动画闪烁。在制作一些动画之前,它会检查动画类是否存在。我不使用动画功能,因为它的性能很差 所以我理解,每次我要求对类做一些事情时,我都会影响DOM 我想知道我是否可以在链接对象上使用其他属性而不是使用类?比如: $('a').on('click', function() { var link = $(this); if (!link.hasClass('animated')) { link.addClass('animated'); // css3

我使用此代码来防止动画闪烁。在制作一些动画之前,它会检查动画类是否存在。我不使用动画功能,因为它的性能很差

所以我理解,每次我要求对类做一些事情时,我都会影响DOM

我想知道我是否可以在链接对象上使用其他属性而不是使用类?比如:

$('a').on('click', function() {
  var link = $(this);

  if (!link.hasClass('animated')) {
    link.addClass('animated');

    // css3 animation

    // callback
    setTimeout(function() {
      link.removeClass('animated');
    }, 600);
    }
  }
});
按以下方式使用是否安全?我在缓存或其他方面会遇到什么问题

尝试使用.data而不是class

link.animated = true;

if (link.animated) {
  // code
}

link.active = true;
使用以下方法存储与元素关联的数据:

$('a').on('click', function() {
    var link = $(this);

    if (!link.data('animation')) {
        link.data('animation', true);

        // css3 animation

        // callback
        setTimeout(function() {
            link.data('animation', false);
        }, 600);
    }

});

我认为数据函数也会影响DOM@Steve没有jQuery使用内部数据结构来存储数据,它不会将数据存储在DOM中,但是如果我将$this和$data选中,它将给出正确的结果。在函数外部或我将调用$.data的任何地方进行检查也会得到相同的结果。因此,jQuery似乎总是在.data上添加数据属性。您认为如何将属性直接存储在$this对象中?like link=$this;link.someproperty='value'?数据不是正确的选择,因为类具有更好的性能数据函数DOM@Steve不,它保存在jQery的$.cache中。元素只是数据的引用键。
var $link = $(this);

//set
$link.data({ foo: 1 });

//get
var foo = $link.data('foo');