[이윰] jQuery-1.8.3를 jQuery-1.9.x 이상으로 업그레이드시 masonry 오류 해결하기
페이지 정보
shadow2fox
2,558
2018.08.22 19:45:06
짧은주소
-
https://yadolee.com/tip/581 주소복사
본문
jQuery-1.8.3를 jQuery-1.9.x 이상으로 업그레이드시 masonry 오류 해결하기
그누보드에 기본 탑재되어 사용되는 jQuery-1.8.3를 jQuery-1.9.x 이상으로 업그레이드할 경우 모달창과 무한스크롤과 연계된 masonry 소스로 인해 다음과 같은 오류가 나타난다.
cannot call methods on masonry prior to initialization; attempted to call method 'appended'
이윰빌더에서 제공하는 스킨 중 갤러리(시즌3) or 블로그(시즌2) 스킨 list.skin.html를 열어 다음과 같이 수정한다.
수정 전
cannot call methods on masonry prior to initialization; attempted to call method 'appended'
이윰빌더에서 제공하는 스킨 중 갤러리(시즌3) or 블로그(시즌2) 스킨 list.skin.html를 열어 다음과 같이 수정한다.
수정 전
function( newElements ) {
var $newElems = $( newElements ).css({ opacity: 0 });
$newElems.imagesLoaded(function(){
$newElems.animate({ opacity: 1 });
$container.masonry( 'appended', $newElems, true );
});
var gutter = 17;
var min_width = 170;
$container.imagesLoaded( function(){
$container.masonry({
itemSelector : '.gallery-item',
gutterWidth: gutter,
isAnimated: true,
columnWidth: function( containerWidth ) {
var windowSize = $(window).width();
if (windowSize > 1199) {
var box_width = (((containerWidth - 2*gutter)/3) | 0) ;
if (box_width < min_width) {
box_width = (((containerWidth - gutter)/3) | 0);
}
} else if (windowSize <= 1199 && windowSize > 766) {
var box_width = (((containerWidth - 1*gutter)/2) | 0) ;
if (box_width < min_width) {
box_width = (((containerWidth - gutter)/2) | 0);
}
} else if (windowSize <= 766 && windowSize > 566) {
var box_width = (((containerWidth - 1*gutter)/2) | 0) ;
if (box_width < min_width) {
box_width = (((containerWidth - gutter)/2) | 0);
}
} else {
var box_width = (((containerWidth - 0*gutter)/1) | 0) ;
if (box_width < min_width) {
box_width = (((containerWidth - gutter)/1) | 0);
}
}
if (box_width < min_width) {
box_width = containerWidth;
}
$('.gallery-item').width(box_width);
setTimeout(function() {
$('.gallery-item').show();
}, 0);
return box_width;
}
});
});
});
수정 후
function( newElements ) {
var gutter = 17;
var min_width = 170;
$container.imagesLoaded( function(){
$container.masonry({
itemSelector : '.gallery-item',
gutterWidth: gutter,
isAnimated: true,
columnWidth: function( containerWidth ) {
var windowSize = $(window).width();
if (windowSize > 1199) {
var box_width = (((containerWidth - 2*gutter)/3) | 0) ;
if (box_width < min_width) {
box_width = (((containerWidth - gutter)/3) | 0);
}
} else if (windowSize <= 1199 && windowSize > 766) {
var box_width = (((containerWidth - 1*gutter)/2) | 0) ;
if (box_width < min_width) {
box_width = (((containerWidth - gutter)/2) | 0);
}
} else if (windowSize <= 766 && windowSize > 566) {
var box_width = (((containerWidth - 1*gutter)/2) | 0) ;
if (box_width < min_width) {
box_width = (((containerWidth - gutter)/2) | 0);
}
} else {
var box_width = (((containerWidth - 0*gutter)/1) | 0) ;
if (box_width < min_width) {
box_width = (((containerWidth - gutter)/1) | 0);
}
}
if (box_width < min_width) {
box_width = containerWidth;
}
$('.gallery-item').width(box_width);
setTimeout(function() {
$('.gallery-item').show();
}, 0);
return box_width;
}
});
});
var $newElems = $( newElements ).css({ opacity: 0 });
$newElems.imagesLoaded(function(){
$newElems.animate({ opacity: 1 });
$container.masonry( 'appended', $newElems, true );
});
});
소스를 보면 알겠지만 masonry가 무한스크롤보다 먼저 초기화되야 언급된 오류가 일어나지 않는다.
이윰빌더
jQuery
1.8.3
1.9.x
이상
업그레이드
masonry
masonry prior to initialization
attempted to call method
appended
오류
해결하기
추천인
레벨 149
경험치 3,343,659
Progress Bar 80.23%
- 가입일 : 2015-03-10 12:21:44
- 서명 : 인간에게 가장 큰 선물은
자기 자신에게 기회를 주는 것이다.
- 크리스 가드너, Chris Gardner -
- 자기소개 : There's never a shortcut to happiness.



댓글
첫 번째 댓글을 남겨 주세요