0

这是我拥有的代码(到目前为止)。我已经成功地直接提醒来自大图像 url 的值。我希望能够将值作为对象返回给另一个变量,但没有成功。我究竟做错了什么?

$.fn.extend({
        getBgImage: function(callback){
            var path = $(this).css('background-image').replace('url', '').replace('(', '').replace(')', '').replace('"', '').replace('"', '');
            var tempImg = $('<img />');
            tempImg.hide(); //hide image
            tempImg.bind('load', callback());
            $('body').append(tempImg); // add to DOM before </body>
            tempImg.attr('src', path);
            $('#tempImg').remove(); //remove from DOM
        },
        jZoom: function(){
            var swide = $(this).children('.zimg').outerWidth(),
                shigh = $(this).children('.zimg').outerHeight(),
                large = $(this).attr('href');
            $(this).after('<div class="mousearea" style="width:'+swide+'px;height:'+shigh+'px;cursor:move;z-index:99;opacity:0;position:absolute;top:0;left:0;"></div>').parent('.zoom').after('<div class="large" style="background-image:url('+large+');"></div>');
            var limg = $(this).parent('.zoom').next('.large').getBgImage(function(){
                var y = $(this).height(), x = $(this).width();
                alert(x+' '+y); // this alerts the values as expected
                //return {x: x, x: y}; This is what I attempted to return the values
            });
//alert(limg.x); and this is where i check to see if the object are available but get undefined
        }
    });
    $(function(){
        $('.zoomme').each(function(){
            $(this).jZoom();
        });
    });

这只是一项正在进行的工作,主要是为了这样做,但想知道到目前为止我哪里出错了。

提前致谢。

4

1 回答 1

0

您正在分配bgImage函数的返回值,而不是作为参数传递给的函数的返回值bgImage

由于回调在传递时实际上并没有被执行,而是被绑定为负载处理程序,因此此时无法获取其返回值。

于 2012-11-30T12:29:36.933 回答