JQuery 打开弹出窗口并从单击的链接返回值

JQuery open popup window and return value from clicked link

本文关键字:单击 链接 返回值 窗口 JQuery      更新时间:2023-09-26

我想使用 JQuery 打开一个弹出窗口来显示一系列图像。图像包装在无序列表中的链接标记中。在某些时候会添加一些导航,所以我认为对话框不合适。这是我到目前为止的代码:

主页:

<script>
    $('.ImageManager').click(function (event) {
        event.preventDefault();
        window.open($(this).attr("href"), "popupWindow", "width=600, height=400, scrollbars=yes");
    });
</script>

<a href="/image-manager" class="ImageManager">Add Image</a><br />
<ul id="imagelist">
</ul>

弹出窗口:

<script>
    $(function() {
        $(".addimage").click(function() {
            $("#imagelist", opener.document).append("<li></li>");
            return false;
        });
    });
</script>

<ul>
% for image in images:
<li><a href="" class="addimage"><img src="/static/images/{{ image }}" alt="" /></a></li>
% end
</ul>

我遇到的第一个问题是弹出窗口无法打开,它只是在当前浏览器窗口中打开图像管理器。我在两个页面的头部部分都引用了 JQuery,它适用于其他 JQuery 代码。

其次,我尝试使用普通的 Javascript 打开有效的弹出窗口,但我无法获得单击的图像链接将图像文件名附加到打开器窗口,并且弹出窗口之后不会关闭。

如果我可以让弹出窗口工作,如何传递单击弹出窗口中的图像时传递的 {{ 图像 }} 变量(Python 瓶模板变量)?

好吧,让我试一试:简短而甜蜜,您需要参考打开的窗口。

现在,当然,在JSFiddle中,我是有限的,因为我无法像您一样创建多个文档来加载,因此这看起来与您的文档略有不同;抱歉。但是我可以通过从隐藏的div修改HTML来创建相同的效果。隐藏的div 是您的"其他文档"。

当您使用 window.open 创建新窗口时,返回的是对该窗口的引用,这就是我的代码中的 w 和 $w。这或多或少是javascript中的"窗口"。所以,当你看到

$('#imagelist', w.opener.document)

w = 窗口。虽然,这确实显示了一种映射功能的替代方法(如果需要),即调用子文档并从父文档绑定。

法典:

$('.ImageManager').click(function (event) {
    event.preventDefault();
    var w = window.open("", "popupWindow", "width=600, height=400, scrollbars=yes");
    var $w = $(w.document.body);
    $w.html($('#modalText').html());
    $w.find(".addimage").click(function(e) {
        e.preventDefault();
        console.log(w.opener.document);
        $("#imagelist", w.opener.document).append("<li></li>");
    });
});

弦乐(小提琴):http://jsfiddle.net/NPyrd/5/