Диалоговое окно jQuery с динамическим контентом
Я хочу создать диалоговое окно jQuery "на лету". Я использую это:
var newDiv = $(document.createElement('div'));
$(newDiv).html('hello there');
$(newDiv).dialog();
Затем я получаю это в заголовке html:
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.1.custom.min.js"></script>
Когда я пытаюсь запустить JS в IE7, я получаю следующую ошибку в $(newDiv).dialog(); линия:
Объект не поддерживает это свойство или метод.
Кто-нибудь знает, что происходит?
Ответы
Ответ 1
Ваш код работает, вы можете протестировать его здесь, это означает, что у вас, вероятно, есть проблема с script include, убедитесь, что ваши файлы находятся в папке js
рядом с этой страницей или если вы предполагали, что они должны быть от корневого сайта, используйте /js
вместо этого.
Или рассмотрите возможность использования CDN.
Вы можете сделать код более эффективным (я понимаю, что это просто тест), например:
var newDiv = $(document.createElement('div'));
newDiv.html('hello there');
newDiv.dialog();
Это работает, потому что newDiv
уже является элементом jQuery, без причины клонировать объект каждый раз... или немного короче:
$('<div />').html('hello there').dialog();
Ответ 2
Вот альтернативный способ динамического создания диалогов и их сообщений:
$('<div></div>').dialog({
modal: true,
title: "Confirmation",
open: function() {
var markup = 'Hello World';
$(this).html(markup);
},
buttons: {
Ok: function() {
$( this ).dialog( "close" );
}
}
}); //end confirm dialog
Смотрите в действии: http://jsfiddle.net/DYbwb/