2011-05-12 53 views
1

我試圖在「jquery dialog」裏面使用javascript代碼,並且我的代碼執行了多次。JavaScript在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 2011-05-12 10:07:22

+0

對不起,格式不正確。固定。 – Junior 2011-05-12 10:08:32

回答

1

嗯,這是有道理的,然後......

jQuery可能將#dialog的內容定位到某處,並再次執行裏面的代碼。

爲什麼在#dialog框中有JS?它是否加載了XHR?如果沒有,請將它移動到其他已準備就緒代碼的位置。

您想在顯示對話框時觸發事件嗎?這就是爲什麼對話中有代碼?如果是這樣,有恩事件的API爲:http://jqueryui.com/demos/dialog/#events

+0

謝謝...我將使用您的建議,並將從對話框中移動代碼。我以爲也許這是虛假的錯誤:) – Junior 2011-05-12 10:35:30

2

也許這是你想要的,cmiiw請:)

<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('內'')」當頁面剛裝載。我需要從服務器獲取一些額外的數據,並初始化一些js控件......我需要在用戶看到這個對話框之前這樣做。 – Junior 2011-05-12 10:39:53

1

執行以下操作:

<div id='dialog'></div> 

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

使用open事件原因您的代碼在對話框打開時運行,而不是在文檔準備就緒時運行。

http://jqueryui.com/demos/dialog/#event-open