多个可拖动的 iFrame,始终让 iFrame 成为焦点

Posted

技术标签:

【中文标题】多个可拖动的 iFrame,始终让 iFrame 成为焦点【英文标题】:Multiple Draggable iFrames, Always Have iFrame in Focus Be On Top 【发布时间】:2012-12-07 07:21:31 【问题描述】:

我的页面上有 2 个 iFrame。两者都可以使用 jQuery UI 进行拖动。如果两个 iFrame 都被拖动到相同的空间上,则第二个加载的 iFrame 始终是主要的 iFrame,即。它覆盖了第一个 iFrame。有没有办法将焦点 iFrame 设置为主要 iFrame,这样如果我移动第一个 iFrame 并将其放在第二个 iFrame 上,它将覆盖第二个 iFrame,反之亦然?

html

<a class = 'expandorcollapse3' href = '#'>Web Page 1</a>
<br>
<a class = 'expandorcollapse4' href = '#'>Web Page 2</a>

<div id = 'iframetest1' style = 'display: none'>
      <iframe id = 'iframe1' src = 'http://www.wsj.com'></iframe></a></div>
<div id = 'iframetest2' style = 'display: none'>
      <iframe id = 'iframe1' src = 'http://www.wsj.com'></iframe></a></div>

CSS:

#iframe1 width: 600px; height: 500px; border; 1px solid black; zoom: 1.00; -moz-transform: scale(0.65); -moz-transform-orgin: 0 0;
         -o-transform: scale(0.65); -o-transform-origin: 0 0; -webkit-transform: scale(0.65); -webkit-transform-origin: 0 0;

#iframetest1 width: 390px; height: 325px; margin: 10px; border-style: solid; border-width: 10px;    

#iframetest2 width: 390px; height: 325px; margin: 10 px; border-style: solid; border-width: 10px;

javascript

$(document).ready(function()
    $(".expandorcollapse3").click(function()
        if($("#iframetest1").is(":hidden"))
            $("#iframetest1").show("slow");
            
        else
            $("#iframetest1").hide("slow");
            
        );
    );

$(document).ready(function()
    $(".expandorcollapse4").click(function()
        if($("#iframetest2").is(":hidden"))
            $("#iframetest2").show("slow");
            
        else
            $("#iframetest2").hide("slow");
            
        );
    );

$("#iframetest1").draggable(containment: "document");
$("#iframetest2").draggable(containment: "document");

见jsFiddle here

【问题讨论】:

当它获得焦点时,您可以尝试将“顶部”iframe 移动到最后一个 iframe 之后 ***.com/questions/1363650/… 【参考方案1】:

您可以在draggable中指定stack选项,以便当前拖动的元素到前面

$("#iframetest1,#iframetest2").draggable(
    containment: "document",
    stack: 'div'
);

您还可以使用切换功能来缩短代码,而不是使用 if/else 语句

$(document).ready(function() 
    $(".expandorcollapse3").click(function() 
        $("#iframetest1").toggle('slow');
    );
    $(".expandorcollapse4").click(function() 
        $("#iframetest2").toggle('slow');
    );
);

http://jsfiddle.net/nwu4Q/ ​

【讨论】:

以上是关于多个可拖动的 iFrame,始终让 iFrame 成为焦点的主要内容,如果未能解决你的问题,请参考以下文章

JQuery 可拖动到 iframe 之外。可放置在 iframe 内

IFrame 中的 jQuery 可拖动处理程序

可拖动 iFrame 寄存器单击而不是拖动

jQuery ui 可拖动拖放到 iframe

jquery ui可拖动可排序元素到iframe中

无法为 iframe 使用可拖动的 jQuery UI