Ответ 1
Чтобы заставить его работать, вы должны вызвать jQuery из родителя, а не из iframe. Для этого используйте следующие...
window.parent.jQuery('#upload-form').dialog('close');
Это должно сделать это!
Я применил следующий код для загрузки фотографий в диалоговом окне jQuery (с использованием iframe).
Здесь Iframe
<div style="display: none">
<iframe id="upload-form" frameborder="0" marginheight="0" marginwidth="0" src="Upload.aspx"></iframe>
</div>
И здесь код jQuery на родительской странице, который заботится об открытии диалога.
$("#upload-image").click(function (e) {
e.preventDefault();
$('#upload-form').dialog({
modal: true,
width: 300,
title: "Upload Image",
autoOpen: true,
close: function(event, ui) { $(this).dialog('close') }
});
});
Затем я вставляю script (на странице iframe) после успешной загрузки, которая возвращает результат на родительскую страницу, но я хочу закрыть диалог одновременно.
$(document).ready(function () {
$(parent.document).find('#imagePathValue').val('theimagevalue');
$(parent.document).find('#upload-form').dialog('close');
});
#imagePathValue
успешно передается, но я не могу закрыть диалоговое окно.
Любые идеи?
Чтобы заставить его работать, вы должны вызвать jQuery из родителя, а не из iframe. Для этого используйте следующие...
window.parent.jQuery('#upload-form').dialog('close');
Это должно сделать это!
Попробуйте следующее:
$(document).ready(function () {
$(parent.document).find('#imagePathValue').val('theimagevalue');
window.parent.$('#upload-form').dialog('close');
});
В дополнение к этому вы также должны сделать это:
window.parent.$('#upload-form').remove();
поэтому экземпляр Iframe будет удален после закрытия диалогового окна.
поэтому конечный код должен быть:
$(document).ready(function () {
$(parent.document).find('#imagePathValue').val('theimagevalue');
window.parent.$('#upload-form').dialog('close');
window.parent.$('#upload-form').remove();
});
Спасибо Kaushal
Определенно помните, что для вызова этих типов функций он должен ссылаться на функцию в самом родительском документе. Когда вы используете второй аргумент конструктора jquery, вы указываете только цель метода, а не где его выполнять.
Вот почему $('element', window.parent.document).method();
не будет работать, а window.parent.jQuery('element').method();
будет.