【问题标题】:JQuery open popup window and return value from clicked linkJQuery打开弹出窗口并从单击的链接返回值
【发布时间】:2013-11-22 17:36:05
【问题描述】:

我想使用 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>

我遇到的第一个问题是弹出窗口没有打开,它只是在当前浏览器窗口中打开图像管理器。我在两个页面的 head 部分都引用了 JQuery,它可以与其他 JQuery 代码一起使用。

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

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

【问题讨论】:

    标签: javascript jquery popup append element


    【解决方案1】:

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

    现在,当然,在 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/

    【讨论】:

    • 现在奇怪的是我最终将您的 JSFiddle 逐个字母复制到另一个小提琴中并且两者都可以工作,但是如果我尝试将其合并到静态页面或 Bottle 模板中,我仍然没有得到弹出窗口。将更新我的帖子,看看是否有人能在我的代码中看到错误。
    • 哎哟....我一编辑我的帖子就看到了。不知何故丢失了我的文件准备行。抱歉,再次编辑,解决了。在我睡了之前不会再碰键盘。谢谢戴夫。
    • 大声笑。我去过那里。当它是一个逗号时更好,它不应该在实时发布前 10 分钟。很高兴能提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多