我有一个自定义的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;
});
});
非常感谢
答案 0 :(得分:0)
您无法在if
语句中进行函数声明。
这是一个限制,因为它是在if
中声明的,但该函数的范围是顶部并可用。
基本上,你不能做条件函数声明(它在JavaScript中根本不起作用)。要修复它,请将函数指定给变量。
var portfolioColumn;
if ($('.full-width').length) {
portfolioColumn = function () { /* etc */ };
}