2012-02-05 2 views
0

인기있는 jquery 플러그인을 사용하여 제 레이아웃에 내 칼럼을 잘 맞 춥니 다. JQuery, setTimeout not workingsetInterval 브라우저 성능이 크게 저하 될 수 있습니까?

솔루션은 다음과 같이 두 번째 매를 플러그인 벽돌 업데이트 할에서는 setTimeout을 사용하는 것입니다 : BoltHead 여기에 있었다 나는 정확한 같은 문제를 해결하기 위해 setInterval을 사용하고

$(function() { 
    setInterval(update, 500); 
}); 

    function update() { 
     var $container = $('#packages'); 
     $container.imagesLoaded(function(){ 
      $container.masonry({ 
      itemSelector : '.mainPackage', 
      columnWidth : 316, 
      singleMode: true, 
      gutterWidth: 15 
      }); 
     }); 
    } 

하면이 나쁜 생각 그대로 브라우저 성능까지? jquery가 매초 이렇게 무거운 기능을 실행하면 작업 속도가 느려질 것이라고 생각합니다. 이것은 나쁜 습관입니까? 내가 이것을하고있는 이유는 slideown에 더 많은 내용을 사용하고 있기 때문에 레이아웃을 재조정하기 위해 벽돌을 필요로하기 때문입니다. 이 솔루션에 대한 의견이 있으십니까?

+0

새 콘텐츠를 추가 할 때만 업데이트하면 어떻습니까? –

+0

에서와 같이 slideToggle이 트리거 될 때 업데이트 하시겠습니까? – JCHASE11

+0

예, 레이아웃을 변경하지 않고 매 초마다 업데이트하려고하면 CPU를 아무 것도 사용하지 않게됩니다. –

답변

3

slideToggle는 두 번째 인수로 콜백을받는, 그래서 거기에 플러그인을 업데이트, 뭔가를 같이 :

slideToggle(time, function(){ 
    update(); // this is your "update" function from question example 
}); 

을 그리고 예, 아무 이유없이 주기적으로 해당 업데이트를 할 수있는 좋은 생각이다.

+0

예, slidetoggle의 콜백이 훨씬 더 좋은 해결책입니다. 감사합니다! – JCHASE11

0

내 경험에 비추어 볼 때 브라우저를 느리게 실행하면됩니다. 처음에는 그것을 알아 채지 못할 수도 있지만, 스크립트가 더 오래 실행될수록 더 나 빠질 것입니다. 나는 정말로 @vucetica 대답을 좋아한다.

0

이것은 플러그인이 "masonrify"할 필요가있는 블록의 수에 따라 다릅니다. 20-50 블록과 같은 것이 있으면 500ms마다 업데이트를 실행해도 아무런 문제가 없습니다. 이것은 내 개인적인 경험에서 얻은 것입니다.