2014-02-14 64 views
1

我有一個自定義js文件,裏面有一個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; 
    }); 
}); 

非常感謝

回答

0

你不能讓一個if語句中的函數聲明。

這是一個限制,因爲它是在if中聲明或不是,函數的範圍是頂部和可用。

基本上,你不能做條件函數聲明(它不會在JavaScript中這樣工作)。要修復它,請將函數分配給變量。

var portfolioColumn; 

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

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

} 
+0

這對我來說現在有意義。非常感謝西蒙。 – FlavaFlav2013