有jQuery對話框問題。當用戶點擊calDayContentEntry div時,我想利用ajax在對話窗口中呈現日曆內容。以下代碼適用於第一次點擊,但在關閉對話框後,我無法再次獲取該對話框以再次顯示該條目。其他條目也是第一次工作,但次要點擊不會再次打開對話框。jQuery對話框只顯示第一次
這裏是相關的代碼,我有問題(所有在同一個asp.net mvc 3剃刀視圖)。有沒有人有一些可以解決這個問題的調整?
...
<div class="calDayContent">
@foreach (var content in day.Contents)
{
<div class="calDayContentEntry">
<input type="hidden" value="@content.Entry.Id" class="hiddenId" />
<div class="@content.DisplayClass">@content.Entry.Hours.ToString() hrs</div>
</div>
<div class="leaveRequestPopup"></div>
}
</div>
...
<script type="text/javascript">
$().ready(function() {
$('.calDayContentEntry').click(function() {
getAndShowDialogContents(this);
});
// Register close event for dialog if overlay is clicked
$('.ui-widget-overlay').live("click", function() {
//Close the dialog
$currentDialog.dialog("close");
});
});
function getAndShowDialogContents(entryDiv) {
var entryId = $(entryDiv).find('input[type="hidden"]').val();
var contentdiv = $(entryDiv).next('.leaveRequestPopup');
var x = $(entryDiv).position().left + jQuery(entryDiv).outerWidth();
var y = $(entryDiv).position().top - jQuery(document).scrollTop();
$.ajax(
{
type: 'POST',
url: 'Request/GetCalendarDetails',
data: { id: entryId },
success: function (result) {
$(contentdiv).html(result);
$(contentdiv).dialog({
autoOpen: false,
modal: true,
title: 'Details',
width: 400,
height: 300,
draggable: false
});
$(contentdiv).dialog("option", "position", [x, y]);
$currentDialog = $(contentdiv).dialog('open');
}
});
}
</script>
這是一個全局變量,在這種情況下,所以它的範圍。儘管如此,仍然不是一件好事。 –
我在上面解釋了正確的sintax與jQuery一起使用 –
我使用全局變量,因此當點擊疊加層時可以訪問對話框,允許用戶單擊頁面上的任何位置來關閉對話框。如果有更好的方法來做到這一點,請讓我知道。我發佈瞭解決此問題的解決方案,如果您可以使用該解決方案更正全局變量使用情況,那麼將非常感謝,我只是不知道該如何解決。 –