Обновление : Извините, пропустил, что диалог был частью, которая вас больше всего беспокоит.См. Диалоговое дополнение в конце.
Оригинальный ответ :
Чтобы загрузить HTML-код из переменной в элемент, вы используете html
function:
var markup = "This is <strong>HTML</strong>";
$("#targetElement").html(markup);
Так что, если вы загружаете эту разметку через ajax, это может быть:
$.ajax({
url: "your.url",
success: function(data) {
$("#targetElement").html(data);
},
error: function() {
// ... deal with error ...
}
});
Если вы действительно просто захватываете всесодержание там, вот что делает используемая вами функция load
:
$("#targetElement").load("your.url");
... но если вы хотите сначала сделать с ней что-то еще, используйте ajax
.
ДляНапример, предположим, что вы загружаете некоторые данные с сервера с использованием нотации JSON.Предполагая, что данные выглядят следующим образом:
{
"foo": "I'm the foo value",
"bar": "I'm the bar value"
}
Вы можете сделать это:
$.ajax({
url: "http://jsbin.com/urebu5",
dataType: "json",
success: function(data) {
// Use the de-serialized object's properties
// to append HTML to the body
$("<p>").html(data.foo).appendTo(document.body);
$("<p>").html(data.bar).appendTo(document.body);
},
error: function(xhr, statusText, ex) {
$("<p>Error running <tt>ajax</tt> call</p>").appendTo(
document.body
);
}
});
Живой пример
Обновление для диалогового окна :
Поскольку в диалоговом окне пользовательского интерфейса jQuery элементы используются только как базовые, вышеприведенное применимо и к ним, вот пример, в котором предполагается, что у элемента диалога есть модальное диалоговое окно id
value."и изначально скрыт (см. ниже для создания диалога с нуля):
function showDialog(content) {
// Get the dialog element
var dlgElement = $("#modal-dialog");
// Update the dialog with the content
dlgElement.find('p:first').html(content);
// Show it
dlgElement.dialog({
height: 140,
modal: true
});
}
Таким образом, используя это из нашего ajax
вызова выше:
// Load our content
$.ajax({
url: "http://jsbin.com/urebu5",
dataType: "json",
success: function(data) {
// Show the 'foo' part of the data
showDialog(data.foo);
},
error: function(xhr, statusText, ex) {
// Show the error
showDialog("Error running <tt>ajax</tt> call");
}
});
Пример Live
Если вы хотите создать диалоговое окно с нуля, просто создайте элементы, а затем обязательно удалите их, когда закончите:
function createDialog(title, content) {
// Create our dialog structure
return $("<div>")
.css("display", "none")
.attr("title", title)
.html("<p>" + content + "</p>")
.appendTo(document.body);
}
function showDialog(dlg, destroy) {
var opts = {
height: 140,
modal: true
};
if (destroy) {
opts.close = function(event, ui) {
$(this).remove();
};
}
dlg.dialog(opts);
}
Использование:
// Load our content
$.ajax({
url: "http://jsbin.com/urebu5",
dataType: "json",
success: function(data) {
// Create a dialog using 'foo' part of the data
var dlg = createDialog("Foo Data", data.foo);
// Show it
showDialog(dlg, true);
},
error: function(xhr, statusText, ex) {
// Create a dialog using 'foo' part of the data
var dlg = createDialog(
"Foo Data - Error",
"Error running <tt>ajax</tt> call"
);
// Show it
showDialog(dlg, true);
}
});
Живой пример