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

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

    // css3 animation

    // callback
    setTimeout(function() {
      link.removeClass('animated');
    }, 600);
    }
  }
});

このコードを使用して、アニメーションのちらつきを防ぎます。いくつかのアニメーションを作成する前に、アニメーション化されたクラスの存在をチェックします。animate関数はパフォーマンスが悪いため使用しません。

だから私は、クラスで何かをするように頼むたびに、DOM に影響を与えていることを理解しています。

linkクラスを使用する代わりに、オブジェクトに追加のプロパティを使用できないでしょうか? お気に入り:

link.animated = true;

if (link.animated) {
  // code
}

link.active = true;

次のように使用しても安全ですか? 私が直面する可能性のある問題 (キャッシングまたは whatelse) はありますか?

4

2 に答える 2

1

メソッドを使用して、data()関連付けられたデータを要素に保存します。

var $link = $(this);

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

//get
var foo = $link.data('foo');
于 2013-08-17T16:40:20.300 に答える
1

.data()クラスの代わりに使ってみてください

$('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);
    }

});
于 2013-08-17T16:39:31.437 に答える