在鼠标悬停时设置两帧之间的时间延迟

时间:2010-12-02 05:32:29

标签: javascript jquery mouseover setinterval mouseout

我必须为单mouseover显示两张图片。因此,当我mouseover到图像时,首先显示图像,然后延迟时间为5000,需要显示相同悬停的图像。现在在mouseout上显示原始图像。

我对JavaScript和jQuery不太熟悉 有人可以请你告诉我如何做到这一点。

我做的是,

 $('.image1').mouseover(function() {

    setInterval($(this).removeClass(.image1).addClass('image-over1'),5000);
    $(this).removeClass(.image1).addClass('image-over2');

    });
   $('.image1').mouseout(function() {
  $(this).removeClass('image-over1');  
    $(this).removeClass('image-over2').addClass(item);
    });


   $('.image1').click(function(){
    document.location='index.php?page='index.php'; 
    })

4 个答案:

答案 0 :(得分:0)

首先,我认为你的方法存在问题;如果从鼠标悬停元素中删除“image1”类,则该元素将不会被鼠标输出的$(“。image1”)选择器匹配。你需要删除它吗?如果你这样做(即如果CSS中的类中有某些东西需要禁用),是否还有其他可以匹配的选择器?

关于时间延迟,如果您使用的jQuery版本大于1.4,则可以使用.delay()函数:

$('.image1').mouseover(function() {
 $(this).addClass('image-over1').delay(5000).addClass('image-over2');
});

答案 1 :(得分:0)

.hover()功能允许您同时指定鼠标悬停/鼠标移动,并且您需要为setInterval创建一个函数:

$('.image1').hover(function(evt) {

  // mouse over function.

  // DOM Element that got the mouseover.
  var target = evt.target; 

  if (target.timer) {
    clearTimeout(target.timer);
    target.timer = null;
  }

  target.timer = setInterval(function() {

       // $(this) will not work here, since 'this' has changed.
       // depending on your css you shouldn't need to remove the '.image1'
       // class, just make sure .image-over1 and .image-over2 are
       // stronger selectors, or occur after .image1
       $('.image1').addClass('image-over2');    

       // at this point your element will be (just guessing <img>, could be
       // anything really:
       // <img class="image1 image-over1 image-over2" .../>

       // it's absolutely fine for the image to have all those classes as
       // long as your css is correct.       

   }, 5000);

    $('.image1').addClass('image-over1');

}, function(evt) {

   // mouse out function.

  // DOM Element that got the mouseout.
  var target = evt.target; 

  if (target.timer) {
    clearTimeout(target.timer);
    target.timer = null;
  }

   $('.image1').removeClass('image-over1');
   $('.image1').removeClass('image-over2');

 });


$('.image1').click(function(){ document.location='index.php?page='index.php'; })

答案 2 :(得分:0)

也许你要创建这些图像的动画GIF ???然后使用类似于此处的代码:http://www.netmechanic.com/news/vol3/design_no10.htm

答案 3 :(得分:0)

即使图像是在飞行中生成的,也可以在PHP中以编程方式生成动画gif - 请参阅http://php.net/manual/en/function.imagegif.php