У меня есть несколько ссылок на странице, и я хочу показать отдельные диалоги jQuery для каждого из них.Вот разметка:
<html>
<body>
<div class="container">
<a href="#" class="delete_link">delete</a> <!-- when this link is clicked, dialog should popup -->
<div class="dialog_box"> <!-- this is the dialog for jquery UI -->
Pleasy specify a reson for your action
<textarea rows="5" cols="60"></textarea>
</div>
</div>
<div class="container">
<a href="#" class="delete_link">delete</a> <!-- when this link is clicked, dialog should popup -->
<div class="dialog_box"> <!-- this is the dialog for jquery UI -->
Pleasy specify a reson for your action
<textarea rows="5" cols="60"></textarea>
</div>
</div>
</body>
</html>
И Javascript:
$(document).ready(function() {
$('.delete_link').click(function() {
alert('about to show jQuery dialog!');
var d = $(this).closest('DIV.container').find('DIV.dialog_box').dialog({
autoOpen: false,
title: 'You are going to delete a div!',
buttons: {
"Do delete": function() {
alert('You have entered:' + $(this).find('textarea').val());
$(this).dialog("close");
$(this).closest('DIV.container').hide(); //hiding div (primary action)
}
},
width: 800
});
d.dialog("open");
});
});
Как видите, ссылки, которые инициируют событие, имеют класс delete_link
и DIV, которые должны быть диалоговыми окнами jQuery UI, иметь dialog_box
класс.
Проблема: , когда диалоговое окно открыто и пользователь нажал «закрыть», невозможно снова открыть диалоговое окно.
Согласно поиску Google и SO яЯ не первый с этой проблемой.Это сообщение, например: http://blog.nemikor.com/2009/04/08/basic-usage-of-the-jquery-ui-dialog/ Кажется, что диалог должен быть каким-то образом инициализирован перед действием click()
, но во всех решениях на странице есть только один диалог с назначенным идентификатором - я просто не могу применить это кмоя ситуация.
Я пробовал это, но это не работает:
$(document).ready(function() {
//initializing
$('DIV.dialog_box').dialog({
autoOpen: false,
title: 'You are going to delete a div!',
buttons: {
"Do delete": function() {
alert('You have entered:' + $(this).find('textarea').val());
$(this).dialog("close");
$(this).closest('DIV.container').hide(); //hiding div (primary action)
}
},
width: 800
});
$('.delete_link').click(function() {
alert('about to show jQuery dialog!');
$(this).closest('DIV.container').find('DIV.dialog_box').dialog("open");
});
});
Я подготовил демо на jsFiddle: http://jsfiddle.net/NQmhk/ Нет jQUery UI css там, ноЯ надеюсь, что этого будет достаточно, чтобы понять проблему.
Любая помощь будет принята с благодарностью.