图片切换后无法正常显示图片放大的功能

图片切换后无法正常显示图片放大的功能
以下是图片局部放大的js 用的是jq


var glass = function(id,dia,mr,shape){
        //参数初始化
        dia=dia==undefined?100:dia;
        mr=mr==undefined?2:mr,
        shape=shape==undefined?50:shape
        //找到当前对象,z-index底层对象1,放大镜2,复制对象3
        var _this = this;
        var dx1 = $("#"+id);
        var dx1width=parseInt(dx1.css("width").replace("px",""));
        var dx2 = dx1.clone();
        var gls = "
"
var glsimg = "" dx2.attr("id",id+"clone") dx1.after(dx2); dx2.after(gls); var gls1 = $("#"+id+"gls"); gls1.append(glsimg); var glsimg1 = $("#"+id+"glsimg"); dx1.parent().css({ "position":"relative" }) dx1.css({ "position":"absolute", "z-index":"1" }) dx2.css({ "width":dx1width, "position":"absolute", "z-index":"3", "opacity":"0", "cursor":"crosshair", "margin":dx1.css("margin"), "left":dx1.css("left"), "top":dx1.css("top"), "right":dx1.css("right"), "bottom":dx1.css("bottom"), }) gls1.css({ //"border":"1px solid lightgray", "width":dia+"px", "height":dia+"px", "border-radius":""+shape+"%", "position":"fixed", "z-index":"2", "overflow":"hidden", "display":"none", "background-color":"black" }) glsimg1.css({ "margin-left": dia/2+"px", "margin-top":dia/2+"px", "width":(dx1width*mr)+"px" }) dx2.mousemove(function(e){ var sy = $(document).scrollTop() var sx = $(document).scrollLeft() //定位放大镜的位置 gls1.css({ "top":e.pageY-(dia/2)-sy, "left":e.pageX-(dia/2)-sx }) //放大图片的位移 glsimg1.css({ "margin-top":(dia/2)-e.offsetY*mr, "margin-left":(dia/2)-e.offsetX*mr }) }) dx2.mouseenter(function(){ gls1.show(); }) dx2.mouseleave(function(){ gls1.hide(); }) }

改成下面这样就行了,dx1width获取有问题,只有第一个是显示的,所以获取的width是显示宽度,其他都是隐藏的,获取到的是css中的width(100%),所以其他的宽度都是100。导致显示宽度只有100,鼠标在图片左边0-100的位置才显示


    window.glassWidth = 100;
    var glass = function (id, dia, mr, shape) {
        //参数初始化
        dia = dia == undefined ? 100 : dia;
        mr = mr == undefined ? 2 : mr,
            shape = shape == undefined ? 50 : shape
        //找到当前对象,z-index底层对象1,放大镜2,复制对象3
        var _this = this;
        var dx1 = $("#" + id);

        ///////这里有问题,
        var dx1width = parseInt(dx1.css("width").replace("px", ""));

        //这里做兼容,后续都使用第一张图片宽度
        if (dx1width > 100) window.glassWidth = dx1width;
        else dx1width = window.glassWidth

        ///////////
        var dx2 = dx1.clone();
        var gls = "<div id='" + id + "gls'></div>"
        var glsimg = "<img id='" + id + "glsimg' src='" + dx1.attr("src") + "'>"
        dx2.attr("id", id + "clone")
        dx1.after(dx2);
        dx2.after(gls);
        var gls1 = $("#" + id + "gls");
        gls1.append(glsimg);
        var glsimg1 = $("#" + id + "glsimg");
        dx1.parent().css({
            "position": "relative"
        })
        dx1.css({
            "position": "absolute",
            "z-index": "1"
        })
        dx2.css({
            "width": dx1width,
            "position": "absolute",
            "z-index": "3",
            "opacity": "0",
            "cursor": "crosshair",
            "margin": dx1.css("margin"),
            "left": dx1.css("left"),
            "top": dx1.css("top"),
            "right": dx1.css("right"),
            "bottom": dx1.css("bottom"),
        })
        gls1.css({
            //"border":"1px solid lightgray",
            "width": dia + "px",
            "height": dia + "px",
            "border-radius": "" + shape + "%",
            "position": "fixed",
            "z-index": "2",
            "overflow": "hidden",
            "display": "none",
            "background-color": "black"
        })
        glsimg1.css({
            "margin-left": dia / 2 + "px",
            "margin-top": dia / 2 + "px",
            "width": (dx1width * mr) + "px"
        })
        dx2.mousemove(function (e) {
            var sy = $(document).scrollTop()
            var sx = $(document).scrollLeft()
            //定位放大镜的位置
            gls1.css({
                "top": e.pageY - (dia / 2) - sy,
                "left": e.pageX - (dia / 2) - sx
            })
            //放大图片的位移
            glsimg1.css({
                "margin-top": (dia / 2) - e.offsetY * mr,
                "margin-left": (dia / 2) - e.offsetX * mr
            })
        })
        dx2.mouseenter(function () {
            gls1.show();
        })
        dx2.mouseleave(function () {
            gls1.hide();
        })
    }

有报错吗? 无法正常显示 是图片 路径问题吧。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632