2014-05-25 1 views
0

이전 함수가 함수를 완료하기 전에 하나의 이벤트를 어떻게 발생합니까? 나는 또한 $('.bf-count').text()를 사용하여 BF-카운트 값을 얻기 위해 실행하는 다른 jQuery를 파일이하나의 아약스 함수가 ​​완료되기 전에 jquery 함수를로드하는 방법

var BrainyFilter = { 
    //... 
    init: function (opts) {}, 
    changeTotalNumbers: function (data) { 
     jQuery(BrainyFilter.filterFormId).find('.bf-count').remove(); 
     jQuery(BrainyFilter.filterFormId).find('option span').remove(); 
     jQuery(BrainyFilter.filterFormId).find('select').removeAttr('disabled'); 
     jQuery('.bf-attr-filter').not('#bf-price-container').find('input, option') 
      .attr('disabled', 'disabled') 
      .parents('.bf-attr-filter') 
      .addClass('bf-disabled'); 

     if (data && data.length) { 
      for (var i = 0; i < data.length; i++) { 
       jQuery('.bf-attr-' + data[i].id + ' .bf-attr-val').each(function (ii, v) { 
        if (jQuery(v).text() == data[i].val) { 
         var parent = jQuery(v).parents('.bf-attr-filter').eq(0); 
         var isOption = jQuery(v).prop('tagName') == 'OPTION'; 
         var selected = false; 
         if (isOption) { 
          jQuery(v).removeAttr('disabled'); 
          selected = jQuery(v)[0].selected; 
         } else { 
          parent.find('input').removeAttr('disabled'); 
          selected = parent.find('input')[0].checked; 
         } 
         parent.removeClass('bf-disabled'); 
         if (!selected) { 
          if (!isOption) { 
           parent.find('.bf-cell').last().append('<span class="bf-count">' + data[i].c + '</span>'); 
          } else { 
           jQuery(v).append('<span> (' + data[i].c + ')</span>'); 
          } 
         } 
        } 
       }); 
      } 
      jQuery('.bf-attr-filter input[type=checkbox]').filter(':checked') 
       .parents('.bf-attr-block').find('.bf-count').each(function (i, v) { 
       var t = '+' + jQuery(v).text(); 
       jQuery(v).text(t); 
      }); 
      // since opencart standard filters use logical OR, all the filter groups 
      // should have '+' if any filter was selected 
      if (jQuery('.bf-opencart-filters input[type=checkbox]:checked').size()) { 
       jQuery('.bf-opencart-filters .bf-count').each(function (i, v) { 
        var t = '+' + jQuery(v).text().replace('+', ''); 
        jQuery(v).text(t); 
       }); 
      } 
     } 

     // disable select box if it hasn't any active option 
     jQuery(BrainyFilter.filterFormId).find('select').each(function (i, v) { 
      if (jQuery(v).find('option').not('.bf-default,[disabled]').size() == 0) { 
       jQuery(v).attr('disabled', 'true'); 
      } 
     }); 
    }, 
    //... 
} // close the BrainyFilter 

:

나는 다음과 같은 AJAX 코드가 있습니다. 페이지로드시 bf-count 값이 비어 있습니다. 위의 코드는 bf-count을 삽입 했으므로 값을 얻으려면 for 루프가 완료 될 때까지 기다려야합니다.

가장 좋은 방법은 무엇입니까?

+0

코드 예제를 줄일 수 있습니까? – hitautodestruct

+0

안녕하세요, 아약스 파일에서 아약스를 호출하는 코드 줄에 외부 정렬 코드를 삽입한다고 생각합니다. 정렬하여 관리하십시오. 감사합니다. 어쨌든 당신의 제안. – redcoder

+0

여기에 비동기 호출을 볼 수 없습니까? 아약스가 무슨 뜻이야? –

답변

0

두 번째 js 파일이로드되는 방식을 모른 채만 나는 추측 할 수있는 제안 만 할 수 있습니다.

이 페이지가 완전히로드 된 후 두 번째 JS 파일 코드 를 실행하려는 경우, 당신의 코드를 포장 할 수 있습니다

jQuery(window).load(function(){ 
    //your code here. runs after the page is fully loaded 
}); 

jQuery를 문서 : http://api.jquery.com/load-event/

을 "로드 이벤트입니다 요소 및 모든 하위 요소가 완전히로드되면 요소로 전송됩니다.이 이벤트는 URL과 연결된 요소 (이미지, 스크립트, 프레임, iframe 및 창 객체)로 보낼 수 있습니다. "

관련 문제