2011-03-01 55 views
0

我將一些來自get-request的html傳遞給我的Jquery對話框函數。jquery對話框不能使用jquery函數

在對話框中,但我不能使用任何jQuery的功能,雖然我 已經在調用對話框的頁面中包含jquery。

如果我將它包含在對話框的html中,對話框的「OK」按鈕停止工作,並且在我已經調用對話框的頁面上的其他所有東西在關閉對話框後也不再工作。

我期望在頁面中包含jquery,調用對話就足以讓對話訪問jquery,但這似乎並不是這樣。

這裏是我的代碼:

dialog.js:

var dialogDiv = $(document.createElement('div')); 

function myDialogue(content) { 
    dialogDiv.html(content); 
    dialogDiv.dialog({autoOpen: false, modal: true, buttons: { "ok": function() { 
    $(this).dialog("close"); 
    $(this).dialog("destroy").remove(); 
} } }); 
dialogDiv.dialog('open'); 
dialogDiv.scrollTop(0); 
return true; 
} 

調用myDialogue =>

main.html中:

<script type="text/javascript" src="/path/to/jquery.js"></script> 
<script type="text/javascript" src="/path/to/dialog.js"></script> 

$.get("/path/to/controller/index", {param: "value"}, function(content) { 
    myDialogue(content); 
}); 

的HTML代碼返回我的控制器傳遞給對話框:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#edit_div :checkbox").click(function() { 
    // this NEVER gets called unless I include jquery again, but 
    // then the ok button and the rest of the page do not work anymore. 
    alert("checked!!!"); 
    }); 
    }); 
</script> 
<div id="edit_div"> 
<input type="checkbox" value="mycheck" name="mycheck"/> 
.... 

回答

0

只有在第一次加載頁面時纔會調用您已經封裝函數的document.ready事件。

您可以嘗試從document.ready包裝中取出該功能,並將整個script標籤放置在您從控制器發送的標記末尾。

+0

可悲的是這不起作用,仍然無法訪問jquery。我會嘗試將該函數移動到調用頁面,但是它可能對話框函數不可見? – trajectory 2011-03-01 20:02:01

+0

不,該函數需要在對話框填充後運行,否則jQuery將無法找到用於附加點擊處理程序的複選框。 – Gareth 2011-03-01 20:06:19