jQuery Masonry访问内部方法var

时间:2012-03-24 11:04:22

标签: jquery

任何建议如何访问jQuery Masony的内部方法var? 我正在寻找console.log containerSize方法中的layout属性:

第177行> query.masonry.js

我需要在砌体初始化后检索containerSize

$('#container').masonry({
  itemSelector: '.box'
});

console.log("here i need to retrieve the containerSize");

1 个答案:

答案 0 :(得分:1)

不幸的是,如果不重写代码或使用调试器在运行时从其作用域之外访问变量中的值,那是不可能的。

如果您阅读jQuery砌体源代码,则containerSize将被推送到名为“styleQueue”的对象数据成员中。不幸的是,它随后被处理和清空,这使得尝试从该成员访问数据毫无意义。

如果查看http://jsfiddle.net/5hgsm/1/,您会发现砌体数据中有很多有用的信息。使用像Google Chrome这样的体面网络检查器,您可以浏览数据对象以查看所有子元素。您很可能会在那里找到可以从中派生containerSize的东西。

然而,您可以尝试直接获取容器的宽度并在调整大小动画完成后设置它,而不是尝试从更抽象的数据计算containerSize。

这可以通过向animationOptions添加“完整”回调来实现,如下所示:

$('#container').masonry({      
    isAnimated: true,      
    itemSelector: '.box',      
    columnWidth: 102,      
    gutterWidth: 0,      
    isFitWidth: true,      
    isResizable: true,      
    animationOptions: {        
        duration: 400,        
        easing: 'swing',        
        queue: false, 
        // Add complete callback here:
        complete: function() {
            // Resize site header, do other stuff if you want
            $('#site-header').width($('#container').outerWidth());
        }  
    }    
});

这样就无需更改第三方插件,也无需自己从其他数据中计算宽度。