1

我有一组 div-s 需要应用一些 jQuery。

<div id="anim1" class="animation"></div>
<div id="anim2" class="animation"></div>

它看起来很简单,但我想让它更灵活一点。虽然这可能是不可能的......但不是复制和粘贴 jQuery 函数的次数与我所拥有的层数一样多,我想知道是否有任何方法可以从鼠标悬停动作中获取层名并将其放入我可以在以下脚本中使用的变量:

$(document).ready(function() {

$('.animation').mouseover(function() {
    layer = '#'+this.id;
});

var steps = [0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500, 1550, 1600, 1650, 1700, 1750, 1800, 1850, 1900, 1950, 2000, 2050, 2100, 2150, 2200, 2250, 2300, 2350, 2400, 2450, 2500, 2550, 2600, 2650, 2700, 2750, 2800, 2850, 2900, 2950,];
  var index = -1;
  setTimeout(function() {
         index++;
         if(index == 57) {
           index = 0;
         }
      $(layer).hover(function(){
        index ++;
      }, function(){
        index -=1;
      });
    $(layer).css('backgroundPosition', '-' + steps[index] + 'px 0px');
    setTimeout(arguments.callee, 50);
  }, 25);
});

我想知道我在这里做错了什么。任何想法都非常感谢......

更新。试图在 $(document).ready(function() 中声明变量。我不确定是否可以这样做,但至少动画现在正在移动。唯一的问题是当我停止时两者都停止将鼠标悬停在其中任何一个上。:

 $(document).ready(function() {
 layer = $('.animation').mouseover(function() {
    '#'+this.id;
});
4

3 回答 3

0

您可以在鼠标悬停函数范围之外设置一个变量,然后将 $(this) 分配给函数内的该变量

变种;

$('.animation').mouseover(function() {
    that = $(this);
});

然后用那个来引用外面的元素。我不确定您要在这里做什么,但这是“传递元素”的一种方式。

于 2012-12-08T13:46:48.507 回答
0

当你不想为每个 div 复制你的函数时,我会使用每个 jQuery

我会给每个 div 一个类名:

<div class="anim" class="animation"></div>
<div class="anim" class="animation"></div>

然后将您的效果分配给每个元素:

$('.anim').each(function(index_each, element) {

  var steps = [0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500, 1550, 1600, 1650, 1700, 1750, 1800, 1850, 1900, 1950, 2000, 2050, 2100, 2150, 2200, 2250, 2300, 2350, 2400, 2450, 2500, 2550, 2600, 2650, 2700, 2750, 2800, 2850, 2900, 2950,];
  var index = -1;

  setTimeout(function() {
    index++;
    if(index == 57) {
      index = 0;
    }

    $(element).hover(function(){
       index ++;
      }, function(){
            index -=1;
    });

    $(element).css('backgroundPosition', '-' + steps[index] + 'px 0px');
    setTimeout(arguments.callee, 50);
  }, 25);
});
于 2012-12-08T14:04:48.483 回答
0

给你,伙计...

小提琴

$('.animation').each(function() {
    var anim = $(this);

    var steps = [0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500, 1550, 1600, 1650, 1700, 1750, 1800, 1850, 1900, 1950, 2000, 2050, 2100, 2150, 2200, 2250, 2300, 2350, 2400, 2450, 2500, 2550, 2600, 2650, 2700, 2750, 2800, 2850, 2900, 2950 ];
    var index = -1;

    setTimeout(function() {
        index++;
        if (index == 57) {
            index = 0;
        }
        anim.hover(function() {
            index++;
        }, function() {
            index -= 1;
        });
        anim.css('backgroundPosition', '-' + steps[index] + 'px 0px');
        setTimeout(arguments.callee, 50);
    }, 25);

});
于 2012-12-08T14:09:14.450 回答