2010-08-04 5 views
0

해결 : 줄을 destination.block (...) 오류를 일으키는 것입니다. 나는 이것을 피하기 위해 비어있는 것을 사실로 동등하게 만들었습니다. if (empty) 문은 바쁜 메시지를 표시하는 두 가지 다른 방법 중 하나를 선택한다고 생각합니다.

전 jQuery를 처음 사용하고 전 동료의 ASP.NET MVC 2 프로젝트를 유지 관리했습니다. 나는 다음 코드 줄이 무엇을하고 있는지 이해하는 데 어려움을 겪고있어 : 파이어 폭스에서

var empty = ($(":not(script)", destination).length == 0); 
이 줄은 원인

및 오류 IE뿐만 없음. 솔직히 아래 함수를 살펴보면 필자는 필자가 필요하다고 생각하지 않지만 제 동료는 코드를 주석으로 작성하는 것을 믿지 않았습니다. 코드 변경의 영향을 이해해야합니다. 위에서

PRISMbase.LoadPartialEx = function(url, data, destination, successCallback, loadingMessage, appendNotOverwrite) { 
    var empty = ($(":not(script)", destination).length == 0); 
    var message = loadingMessage == null ? "Please wait" : loadingMessage; 
    if (empty) 
     destination.html(busy); 
    else 
     destination.block({ message: '<h1 class="Progress">' + message + '</h1>' }); 

    return $.ajax({ 
     data: data, 
     dataType: "html", type: "GET", url: url, 
     success: function(viewHtml) { 
      var partial = $(viewHtml); 
      if (!empty) 
       destination.unblock(); 

      if(viewHtml != "") 
      { 
       if (appendNotOverwrite) 
        destination.append(partial); 
       else 
        destination.html(partial); 

       PRISMbase.InitialiseFormElements(destination); 
      } 
      else 
       destination.empty(); 

      if (successCallback != null) successCallback(destination, partial); 
     } 
    }); 
} 

:

대상 "#TabContent을"(이것은 DIV이다) 복귀 JQuery와 선택기 = 위의 컨텍스트는 다음 JavaScript 함수이다.

busy = '<img class="progress" src="/Content/OnyxProgressCircle.gif" />';

도움을 주시면 감사하겠습니다.

감사합니다.

앨런

답변

0

대상 선택기의 내부에 존재하는 비 스크립트 태그를 모두 검색 한 후 발견 요소의 여부 번호를 테스트하고 코드 행은 변수 empty가 끝나야 0입니다 부울 값으로. IE에서 오류를 어떻게 읽습니까?

당신은 아마 이런 식으로 뭔가 할 수 있도록 또한, jQuery를에서 빈 수익이 거짓 평가합니다 지적 가치가있을 수 있습니다

if ($(':not(script)', destination)) 
    destination.block({ message: '<h1 class="Progress">' + message + '</h1>' }); 
else 
    destination.html(busy); 

하는 순서로 반전을 주목해야합니다. 원래 요소가없는 경우 $(":not(script)", destination).length == 0true이됩니다. 광산에서는 Boolean을 별도로 저장하지 않기 때문에 jQuery에서 초기 반환을 기준으로 작업하므로 요소가 없습니다. false 결과입니다.

+0

안녕하세요 g.d.d.c 실제로 오류가 발생하는 것은 Elmah입니다. 이 오류는 사용자가 IE를 사용하는 경우에만 발생합니다. FF는 괜찮습니다. 오류는 다음과 같습니다. "컨트롤러 에서 공용 작업 메서드 '정의되지 않음'을 찾을 수 없습니다. 지난 24 시간 동안 엘마에서 1200 개의 오류가 발생했습니다. 빈 값을 true 또는 false로 설정하면 (기존 var 빈 행 아래에 var empty = true 행 추가) 오류가 발생하지 않습니다. –

+0

@ Alan-T - 나는 Elmah에 몹시 익숙하지 않다. 당신이 그것을 오버라이드하기 전에'empty'를 로그한다면 그것은 정의되지 않은, true 또는 false로 돌아올 것입니까? 목적지는 이미 jQuery 셀렉터라고했는데 목적지의 내용을 검사하는 또 다른 방법으로'if (destination (. : not (script) '). length == 0)'를 시도해 볼 수 있습니다. –

0

• 해결 : 행의 destination.block (...)이 오류의 원인입니다. 나는 이것을 피하기 위해 비어있는 것을 사실로 동등하게 만들었습니다. if (empty) 문은 바쁜 메시지를 표시하는 두 가지 다른 방법 중 하나를 선택한다고 생각합니다.

관련 문제