【问题标题】:Jquery plugin hover effect doesn't workjQuery插件悬停效果不起作用
【发布时间】:2014-02-23 18:39:15
【问题描述】:

谢谢大家看我的问题。

我正在尝试编写自己的 jQuery 图片库插件。当页面加载时它可以正常工作,但是当我单击 PHOTO 链接转到 PHOTO 部分时它不起作用。

这是链接:

http://dharmeshpatel.net/core_reporting_api/flat-page.html

这是我所做的:

$(function() {
  for (var i = 1; i <= 12; i++) {
   var name = i + '.jpg';
   if(i<10) name = '0' + name;
   var img = $('<img class="galleryImage" src="pic/'+ name + '"/>');
   $("#gallery").append(img);
  };
  var g = new  PS.Gallery('gallery');
});

这是插件代码:(在页面刷新时它可以工作,但是当我单击菜单链接并转到该 div 时,悬停效果不起作用。)

(function(ns){
        ns.Gallery = function(id){
        var gallery = $('#'+ id);
        var images  = gallery.find('.galleryImage');

        var xPos = 50;
        var yPos = 50;
        var gWidth = gallery.width();

            images.each(function(idx,el){
                var img = $(el);
                img.data('homeX',xPos);
                img.data('homeY',yPos);
                img.data('currentScale',1);
                img.css({
                    'left':xPos,
                    'top':yPos,
                    'width':img.width() * 0.25
                });
                xPos += 95;
                if(xPos > gWidth - 100){

                    xPos = 50;
                    yPos += 115;

                }

                img.hover(
                    function(event){
                    var target = $(event.target);
                        animateImage(target,500,target.data('homeX'),target.data('homeY'),2);
                    },function(event){
                        returnAllToNormal();
                    }
                );
                var returnAllToNormal = function(){
                    images.each(function(idx,el){
                        var img = $(el);
                        animateImage(img,500,img.data('homeX'),img.data('homeY'),1);
                    });
                }
                var animateImage = function(img,duration,left,top,scale){
                        img.stop();
                        img.css('textIndent',img.data('currentScale'));
                        img.animate({
                            'left':left,
                            'top':top,
                            'textIndent':scale
                        },
                        {
                        duration:duration,
                        step:function(now,fx){
                            if(fx.prop === 'textIndent'){
                                img.data('currentScale',now);
                                img.css('transform','scale(' + now + ')');
                            }else if(fx.prop === 'left'){
                                img.css('left',now);
                            }else if(fx.prop==='top'){
                                img.css('top',now);
                            }
                        }
                    });
                }
            });
        }
    }(window.PS = window.PS || {}));

我在正确的地方调用插件吗?

【问题讨论】:

    标签: jquery jquery-hover


    【解决方案1】:

    当我将您的 div#con 的最高值更改为 -2500px 时,您的图库有点坏了。在进一步探索中了解到您正在存储单个图像的当前 x 和 y 位置,这会产生问题。

    播放当前值而不是存储当前值。下面是有问题的代码:

    var img = $(el);
    img.data('homeX',xPos);
    img.data('homeY',yPos);
    img.data('currentScale',1);
    img.css({
        'left':xPos,
        'top':yPos,
        'width':img.width() * 0.25
    });
    

    【讨论】:

    • 感谢您的浏览。 xPos 和 yPos 只是位置。它只是给出图像应该定位的值。问题出在 z-index 上。我已经修好了。现在一切正常。感谢您的关注。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 2014-06-10
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多