jQuery:关于哈希加载的Math.floor函数

时间:2013-08-06 19:26:19

标签: jquery html math jquery-isotope hashchange

我有一个hashchange函数设置来更改div的类并将它们加载到同位素网格中,从而允许我通过哈希URL导航到div。我也有一个Math.floor函数,.grid-break的高度由此确定,始终以230px为间隔,因此它与网格保持一致。 .click-block点击功能会将.grid-break div显示在正确的高度,这很棒。但是然后通过例如导航到此功能www.website.com/#thisisahash.grid-break div出现时没有高度,看起来很破碎 jQuery的:

    $(document).ready(function () {
        $(window).hashchange(function () {
            var hash = location.hash;
            if (hash) {
                var element = $('.click-block[data-hook="' + hash.substring(1) + '"]');
                if (element) showDetail(element);
            }
        });

        $(document).ready(function () {
            $(document).hashchange();

            var $container = $('#main-grid, #news-grid, .main-grid');

            $(function () {
                $container.imagesLoaded(function () {
                    $container.isotope({
                        itemSelector: '.grid-block, .grid-break, .hidden',
                        animationEngine: 'best-available',
                        filter: '*:not(.hidden), .grid-block',
                        masonry: {
                            columnWidth: 8,
                            gutterWidth: 25
                        }
                    });
                });
            });

            $(".click-block").click(function () {
                document.location.hash = $(this).attr('data-hook');
            });
        });


        function showDetail(element) {
            var newHeight = $('#post-' + element.attr('data-hook')).height();
            $('#post-' + element.attr('data-hook')).removeClass('hidden').addClass('grid-break').delay(300).fadeIn('slow');
            newHeight = (Math.floor((newHeight + 10) / 230) + 1) * 230 - 10;
            $('#post-' + element.attr('data-hook')).css('height', newHeight);
            element.children('.up-arrow').fadeIn('slow');
            setTimeout(function () {
                $('html, body').animate({
                    scrollTop: $('#post-' + element.attr('data-hook')).offset().top - 90
                }, "slow");
            }, 1500);
            $('#main-grid').isotope();
        }
});

是否有一种方法可以计算.grid-break div的高度,然后将它们添加到同位素网格中并因此出现断裂?或者这个小问题的任何其他解决方案?任何建议将不胜感激!

1 个答案:

答案 0 :(得分:0)

我通过在窗口加载上触发math.Floor函数解决了这个问题,如下所示:

$(window).load(function(){
var $this = $('.grid-break');

        $this.css('height','auto');
        var newHeight = $this.height();
        newHeight = (Math.floor((newHeight+10)/230)+1)*230-10;
        $this.css('height',newHeight);
});