2016-06-09 2 views
2

이것은 온라인 쇼핑몰의 코드 일부입니다. PHP 코드는 전체 카탈로그를로드하고 jquery는 해당 링크를 클릭하고 카탈로그를 필터링합니다.jquery는 다른 스크립트에서 하나의 스크립트를 호출합니다.

난이 부분이 잘 작동하고 두 페이지 및 둘 다 작동에 jqueries,하지만

<script> 
    $(document).on('click', '.side-menu-categories li', function() { 
     var click = $(this).attr('data-filter'); 
     $('.product-box').hide(); 
     $('.product-box').each(function() { 
      if ($(this).attr('data-filter') == click || click == 0) { 
       $(this).fadeIn('fast'); 
      } 
     }); 
    }); 
</script> 

을 가지고 있고 나는 그것을 아무 문제가 없다,하지만 난 창로드를 호출 할 때이 아니다 위해 (즉, 그냥 clicked = true을) 당신이 each() 기능의 지역 범위에 새로운 변수를 정의하는 var clicked = true;으로

$(window).load(function() { 
    $('#loader_spin').hide(); 
    $('#product_container').show(); 
    var clicked = false; 
    var filter_catalog = <?php echo(isset($_GET['id']) ? $_GET['id'] : 0); ?>; 
    $('.side-menu-categories li').each(function() { 
     if ($(this).attr('data-filter') == filter_catalog) { 
      $(this).click(); 
      var clicked = true; 
     } 
    }); 
    if (clicked == false) { 
     $('.side-menu-categories li[data-filter="0"]').click(); 
    } 
}); 
+0

'(window) .load' 대신'(document) .ready (')를 사용해 보셨습니까? 클래식 로딩 시간 문제와 비슷합니다. – Markus

+0

윈도우로드시이 기능이 필요합니다. 문서 준비가되지 않았습니다. 어쨌든 덕분에 –

답변

0

작업, 그래서 var를 제거하는 것은에 정의 된 전역 변수를 사용하는 위의3210 범위 :

$(window).load(function() { 
    $('#loader_spin').hide(); 
    $('#product_container').show(); 
    var clicked = false; 
    var filter_catalog = <?php echo(isset($_GET['id']) ? $_GET['id'] : 0); ?>; 
    $('.side-menu-categories li').each(function() { 
     if ($(this).attr('data-filter') == filter_catalog) { 
      $(this).click(); 
      clicked = true; //don't declare it locally 
     } 
    }); 
    if (clicked == false) { 
     $('.side-menu-categories li[data-filter="0"]').click(); 
    } 
}); 
+1

당신이 굉장합니다.)) 대단히 감사합니다. –

관련 문제