2011-11-29 9 views
0

나는 Index.cshtml 파일을 가지고 있습니다. 거기에는 두 개의 div 요소가 있습니다. 나는 이런 식으로 하나 개의 사업부에서 부분보기 렌더링 : 자바 스크립트에서 페이지로드 스크립트가 여러 번 실행됩니다.

<div id="div1"> 
    @Html.Partial("_FutureAddEditClaim", Model.NewClaim) 
</div> 
<div id="div2"></div> 

그리고 자바 스크립트

, 나는 두 개의 새로운 div 요소를 만들었습니다. 이 중 하나에서 나는 div1을 덧붙였다.

$(function() { 
    alert("called"); 
}); 

응용 프로그램을 실행하는 경고 메시지가 두 번 표시되고 : 그리고 _FutureAddEditClaim.cshtml에서 나는 부하에서 실행되는 기능을 가지고있다. 아무도 이것이 _FutureAddEditClaim.cshtml에서 왜 일어나는지 말해 줄 수 있습니까?

Index.cshtml에 페이지로드 기능이 있습니다. 이것은 잘 작동합니다.

+0

최종 출력물은 다음과 같습니다. 하나 또는 두 개의 경고가 포함되어 있습니까? (브라우저에서 페이지의보기 소스) 이제 문제가 서버 측 코드 또는 클라이언트 측 코드와 관련이 있는지 알 수 있습니다. – Esailija

+0

페이지로드시 하나의 경고 메시지 만 포함 된 소스를 보았습니다. –

답변

1

당신은 div 요소 중 하나에 "div1"을 추가했다고하셨습니다. 이는 엘리먼트를 두 번로드했기 때문에 JavaScript가 두 번 실행되는 이유입니다. 첫 번째로 한 번로드 한 다음 다시로드 한 후입니다.

+0

감사합니다 ..하지만 요소를 추가해야합니다 ... 어떻게 문제를 해결할 수 있습니까? 페이지로드가 하나 뿐인 이유는 무엇입니까? –

+0

내 머리 꼭대기에서 (그리고 이것이 최선의 선택이 아닐 수도 있습니다.) 페이지로드 이벤트가 처음 발생하면 변수를 설정 (isLoaded라고 함) 할 수 있습니다. 그런 다음 코드에 isLoaded가 이미 설정되어 있는지 확인하여 코드가 두 번 실행되지 않는지 확인하십시오. –

0

이것은 페이지로드시 이벤트를 나타내지 않습니다. 문서가 준비되면 실행되며 문서가 준비 될 때 많은 블록을 실행할 수 있습니다.

$(function() { 
    // Runs when the document is ready 
    alert("called"); 
}); 

당신은 문서가

  • 이 있습니다 준비가되면

    1. 실행 소스 파일의 코드 두 개의 유사한 블록이 있습니다 ... 하나 있는지 확인하기 위해 원본 파일을 스캔해야 당신이 AJAX를 통해 부분 뷰를로드하는 경우, 예를 들어,이 때마다 발생할 수 있습니다
    2. 소스 파일에있는 다른 alert("called") 어딘가에 당신은로드 그것을
  • +0

    감사합니다 ...하지만 두 가지 경고 및 유사한 코드가 없었으며 Ajax를 통해 부분 뷰를로드하지 않습니다 .. –

    +0

    소스를 표시 할 수 있습니까? – Fenton

    관련 문제