使用严格的同位素问题?

时间:2014-02-14 10:03:42

标签: jquery wordpress

我有一个自定义的js文件,里面有一个Isotope函数。一切都很好,直到我在顶部声明使用严格,然后我收到错误 -

在严格模式代码中,函数只能在顶级声明或在另一个函数中立即声明。

我有以下Isotope代码,但不确定我应该如何调整此符合性?

if ($('.full-width').length) {

    function portfolioColumn() {
        var width = $(window).width(),
            column;

        if (width > 1400) {
            column = 4;
        } else if (width > 1000) {
            column = 3;
        } else if (width > 550) {
            column = 2;
        } else if (width > 0) {
            column = 1;
        }

        return column;
    }

    function setColumn() {
        if (!$('.portfolio-items').length) return false

        var width = $(window).width(),
            column = portfolioColumn(),
            articleWidth = Math.floor(width / column);

        $('.portfolio-items .project-item').each(function () {
            $(this).css({
                width: articleWidth + 'px'
            });
        });
    }

    setColumn();
    $(window).bind('resize', function () {
        setColumn();
    });
};

$(window).load(function () {
    var $container = $('.portfolio-items');
    var $filter = $('.filter');
    // Initialize isotope 
    $container.isotope({
        filter: '*',
        layoutMode: 'fitRows',
        animationOptions: {
            duration: 750,
            easing: 'linear'
        }
    });
    // Filter items when filter link is clicked
    $filter.find('a').click(function () {
        var selector = $(this).attr('data-filter');
        $filter.find('a').removeClass('current');
        $(this).addClass('current');
        $container.isotope({
            filter: selector,
            animationOptions: {
                animationDuration: 750,
                easing: 'linear',
                queue: false,
            }
        });
        return false;
    });
});

非常感谢

1 个答案:

答案 0 :(得分:0)

您无法在if语句中进行函数声明。

这是一个限制,因为它是在if中声明的,但该函数的范围是顶部并可用。

基本上,你不能做条件函数声明(它在JavaScript中根本不起作用)。要修复它,请将函数指定给变量。

var portfolioColumn;

if ($('.full-width').length) {

    portfolioColumn = function () { /* etc */ };

}