首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让Isotope JS计算出每个图像的高度和宽度值

无法让Isotope JS计算出每个图像的高度和宽度值
EN

Stack Overflow用户
提问于 2011-08-28 02:06:14
回答 2查看 2.4K关注 0票数 0

我正在使用Isotope JS排序和排列图像,它工作得很好,除了当页面加载时,脚本直到所有图像都加载后才会运行。在Isotope JS帮助页面上,它声明提供高和宽值将为脚本提供在不加载图像的情况下排列项目所需的信息。我这样做了,但脚本仍然只有在所有图像加载后才被触发。我是JS编码的新手,所以我想找出我错过了什么。

代码语言:javascript
复制
<script src="js/jquery.isotope.min.js"></script> 
代码语言:javascript
复制
    $(window).load(function(){
        $('#container').isotope({
                itemSelector : '.item'
            });
        });

        var $container = $('#container');

        $('.filters a').click(function(){
            var selector = $(this).attr('data-filter');
            $container.isotope({ filter: selector });
            return false;
        });

        $('#options').find('.option-set a').click(function(){
        var $this = $(this);
            // don't proceed if already selected
            if ( !$this.hasClass('selected') ) {
                $this.parents('.option-set').find('.selected').removeClass('selected');
                $this.addClass('selected');
            }


        });     
代码语言:javascript
复制
          $(window).load(function(){             $('#container').isotope({                     itemSelector : '.item'                 });             });              var $container = $('#container');              $('.filters a').click(function(){                 var selector = $(this).attr('data-filter');                 $container.isotope({ filter: selector });                 return false;             });              $('#options').find('.option-set a').click(function(){             var $this = $(this);                 // don't proceed if already selected                 if ( !$this.hasClass('selected') ) {                     $this.parents('.option-set').find('.selected').removeClass('selected');                     $this.addClass('selected');                 }               });         
代码语言:javascript
复制
<script> 


    $(window).load(function(){
        $('#container').isotope({
                itemSelector : '.item'
            });
        });

        var $container = $('#container');

        $('.filters a').click(function(){
            var selector = $(this).attr('data-filter');
            $container.isotope({ filter: selector });
            return false;
        });

        $('#options').find('.option-set a').click(function(){
        var $this = $(this);
            // don't proceed if already selected
            if ( !$this.hasClass('selected') ) {
                $this.parents('.option-set').find('.selected').removeClass('selected');
                $this.addClass('selected');
            }


        });     

EN

回答 2

Stack Overflow用户

发布于 2012-03-20 19:35:43

提供内联的高度和宽度是必需的,但是您的代码也只在imagesLoaded插件触发load()事件时运行。

您需要做的是将您的代码更改为由jQuery's ready() function触发,如下所示:

代码语言:javascript
复制
$(document).ready(handler)

而不是

代码语言:javascript
复制
$(window).load(handler)

您可以查看有关Isotope here中包含的imagesLoaded插件的更多信息。

票数 1
EN

Stack Overflow用户

发布于 2011-09-11 04:24:19

插件创建者自己写道“这是因为Isotope需要在布局所有项目之前知道项目的确切宽度”这里Need help reversing a function; reverting an animated expansion of a div也许你使用的图像太大或太多,或者两者都有?有同样的问题,当错误地链接到文件夹与原始大小的图像,而不是他们的网站等价物。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7216364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档