2011-07-05 52 views
1

重新加載頁面看看以下示例:JQuery的 - 問題與模態對話框後,在格

example.jsp:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#Button1').button().click(function() { 
     $("#mainContent").load("example_1.jsp"); 
    }); 
    }); 
</script> 

<input id="Button1" type="button" value="RELOAD" /> 
<div id="mainContent"></div> 

example_1.jsp:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#a").button().click(function() { 
     $("#a_form").dialog("open"); 
    }); 

    $("#a_form").dialog({ 
     autoOpen: false, 
     height: 480, 
     width: 625, 
     modal: true 
    }); 
    }); 
</script> 

<input id="a" type="button" value="MODAL" /> 
<div id="a_form" title="Modal Dialog" class="ui-widget"> 
    Hello! 
</div> 

我加載例如.jsp和我按下「RELOAD」按鈕。 然後,在「mainContent」中,出現按鈕「MODAL」,打開模式對話框。

但是如果再次按「RELOAD」按鈕,然後「MODAL」MODAL對話框不再出現! 爲什麼? 我在哪裏做錯了?

回答

1

這是因爲:

<input id="a" type="button" value="MODAL" />

正在使用的ID。

當您再次運行加載時,您將使用不允許的id=a創建另一個輸入。

嘗試使用類標識符,而不是一個ID

+0

此外,還必須使用類標識符調用「a_form」,否則將顯示2個模態對話框:$(「。a_form」)。dialog(「open」); – cawa

+0

以及如果我在模態對話框中插入JQGrid,該怎麼辦?重新加載後,網格仍然是空的!在button.click函數中我添加了$(「.a_grid」)。jqGrid('setGridParam',{datatype:「json」})。trigger(「reloadGrid」); (「.a_form」)。dialog(「open」);有什麼建議麼? – cawa

0

問題可能是因爲example_1的腳本塊被忽略,因爲它被動態加載到頁面中。

所以,你需要做的是將這個腳本塊example.jsp和使用.live()爲「#A」代替。點擊()

$("#a").button().live("click", function() { 
    $("#a_form").dialog("open"); 
}); 
0

你之前加載/重載的主要內容嘗試清空,然後負載。

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#Button1').button().click(function() { 
     $("#mainContent").html('').load("example_1.jsp"); 
    }); 
    }); 
</script>