2013-02-13 38 views
0

下面是我使用的代碼:jQuery UI的對話框不會重開後接近

jQuery(document).ready(function($) { 
      $('.addNew').click(function(event) { 
       event.preventDefault(); 
       openEditor(event); 
      }); /* END ADD CLICK */ 

      $('.editLink').click(function(event) { 
       event.preventDefault(); 
       openEditor(event); 
      }); /* END EDIT CLICK */ 

      /* DEFINE THE EDITOR OPEN LATER */ 
      $('.viewer').dialog({ 
       fullscreen: true, 
       show: "pulsate", 
       width: $(window).width()-20, 
       height: $(window).height(), 
       autoOpen: false 
      }); /* END OPEN EDITOR */ 

     }); /* END DOCUMENT READY */ 

     function openEditor(event) { 
      jQuery(document).ready(function($) { 
       $('.viewer').load(window.location.pathname + 'edit.php'); 
       var x =event.pageX - ($(document).scrollLeft() - 100); 
       var y =event.pageY -$(document).scrollTop(); 
       $('.viewer').dialog('open'); 
      }); /* END DOCUMENT READY */ 
     } /* END OPENEDITOR FUNCTION */ 

對話框打開就好了第一次,但如果我通過點擊關閉按鈕關閉對話框或擊中逃生它不會打開第二次。這是我得到的控制檯錯誤消息:

TypeError: $(...).dialog is not a function 
[Break On This Error] 
$('.viewer').dialog('open'); 

我本來沒有使用的AutoOpen:假的,我認爲是問題,但是當我切換到做這種方式它仍然給了相同錯誤。

任何想法?

UPDATE:

我一直在周圍挖一些,它似乎在$引起的(「觀衆‘)負載(’文件名」);線。出於某種原因,只允許觀衆打開一次。

+0

是你動態生成的按鈕嗎? – bipen 2013-02-13 05:49:14

+0

不,但查看器中的內容是通過Ajax調用加載的,我認爲這可能會導致問題。這幾乎就像ajax加載頁面中的jQuery干擾其他內容。 – Talon 2013-02-13 06:07:20

回答

1

我發現,這是因爲我再包括我被加載到瀏覽器類網頁上的jQuery,所以我想你可以」重新包含jQuery庫。

1

我假設你重新嘗試通過調用openEditor啓動對話框?如果是這樣的情況下,嘗試去除內通話記錄準備

function openEditor(event) { 
    $('.viewer').load(window.location.pathname + 'edit.php'); 
    var x =event.pageX - ($(document).scrollLeft() - 100); 
    var y =event.pageY -$(document).scrollTop(); 
    $('.viewer').dialog('open'); 
} /* END OPENEDITOR FUNCTION */ 
+0

嘗試過,仍然得到完全相同的錯誤,準備好或不準備內部文檔。 (這是爲了方便不衝突的jQuery添加的)。 – Talon 2013-02-13 05:43:52

+0

我剛剛創建了一個小提琴,它似乎工作得很好:http://jsfiddle.net/DkdCT/(注:我注意到瀏覽器負載線爲了小提琴) – Brocco 2013-02-13 05:51:34

+0

我剛剛更新了問題,我發現如果沒有Ajax的內容加載到查看器中,它就可以正常工作。 由於某種原因,$('。viewer').load()搞亂了對話框,只允許它打開一次,我找不到原因。 – Talon 2013-02-13 05:54:06