2011-05-12 5 views
1

"jquery 대화 상자"에서 자바 스크립트 코드를 사용하려고하는데 내 코드가 두 번 이상 실행됩니다.jquery 대화 상자에서 자바 스크립트가 두 번 이상 실행됩니다.

간단한 예 ..

<div id='dialog'> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      console.log('inside'); 
     }); 
    </script> 
</div> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     console.log('Dialog init'); 
     $('#dialog').dialog(); 
    }) 
</script> 

그리고 내 출력은 다음과 같습니다

  1. 내부의 대화는 다음 의미가
+0

'div # dialog'의 내용은 무엇입니까? – Rudie

+0

죄송합니다, 서식이 잘못되었습니다. 결정된. – Junior

답변

1

잘 내부

  • init을 ...

    jQuery는 아마도 #dialog의 내용을 어딘가에서 찾아 내고 코드가 다시 실행됩니다.

    #dialog 상자에 JS가있는 이유는 무엇입니까? XHR이로드되어 있습니까? 그렇지 않은 경우 : domready 코드의 나머지 부분으로 이동하십시오.

    대화 상자가 표시 될 때 이벤트를 트리거 하시겠습니까? 대화에 코드가있는 이유는 무엇입니까? 오픈 이벤트 원인을 사용

    <div id='dialog'></div> 
    
    <script type="text/javascript"> 
        $(document).ready(function(){ 
         console.log('Dialog init'); 
         $('#dialog').dialog({ 
          open: function() { 
           console.log('inside'); 
          } 
         }); 
        }) 
    </script> 
    

    : http://jqueryui.com/demos/dialog/#events

  • +0

    고마워 ... 내가 조언을 사용하고 대화 상자에서 코드를 이동합니다. 나는 어쩌면 거짓 실수라고 생각했다. :) – Junior

    2

    어쩌면 이것이 당신이 다음을 수행

    <div id='dialog'></div> 
    
    <script type="text/javascript"> 
        $(document).ready(function() { 
         console.log('Dialog init'); 
         $('#dialog').dialog(); 
        }) 
    
        $("#dialog").dialog({ 
         open: function() { 
           console.log('inside'); 
          } 
        });  
    </script> 
    
    +0

    아니요, 페이지가 방금로드 될 때 "console.log ('inside')"라고 호출해야합니다. 서버에서 추가 데이터를 가져와 내부의 일부 js 컨트롤을 초기화해야합니다. 사용자가이 대화 상자를 표시하려면 먼저이 작업을 수행해야합니다. – Junior

    관련 문제