【问题标题】:Display iframe onclick of div显示 div 的 iframe onclick
【发布时间】:2019-02-14 03:48:14
【问题描述】:

我有一个div,其中包含一个通过 CSS 生成的图像 src,我想在单击 div 中的图像时显示一个iframe。通过在 iframe 周围包裹一个标签并使用 jQuery 编写一个 click 函数,我能够成功地在一个简单的文本值上显示 iframe。但是,我无法让它与div 中的图像一起使用。我的 jQuery 函数如何在我的 div 中被调用?我的div 中是否需要onclick 事件?

$(document).ready(function() {
  $("#containerA").click(function(e) {
    e.preventDefault();
    $("brand").attr("src", $(this).attr("href"));
  })

});
.containerA {
  width: 140px;
  height: 99px;
}

.containerA:hover {
  background: url("img/imageB_05.jpg") no-repeat;
  background-size: contain;
}

.imageA:hover {
  opacity: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div class="containerA" id="containerA" style="width: 140px; height: 99px"></div>

<iframe id="brand" src="http://www.blah.com">

【问题讨论】:

    标签: jquery html css iframe


    【解决方案1】:

    jQuery/JavaScript 甚至 CSS 都不需要

    只需 HTML 即可更改 &lt;iframe&gt;src

    要求

    1. 您希望&lt;iframe&gt; 指向的站点的[href] 链接。

    2. 链接也需要[target] 属性。将&lt;iframe&gt;[name] 属性赋予它(请参阅下一步)。

      <a href="https://example.com" target="brand"></a>
      
    3. &lt;frame&gt; 只需要一个[name]

      <iframe name="brand"></iframe>
      

    参见演示 1


    还有一个jQuery版本见Demo 2


    演示1

    .containerA {
      width: 70vw;
      height: 30vh;
      outline: 1px dashed red;
    }
    
    .containerA a {
      background-repeat: no-repeat;
      background-position: center;
      background-size: contain;
      display: inline-block;
      height: 100%;
      width: 30%;
      text-decoration: none;
      transition: opacity 1.2s;
      opacity: 0;
    }
    
    .containerA a:hover {
      transition: opacity 0.75 ease;
      opacity: 1;
    }
    
    a:first-of-type {
      background-image: url(https://i.ibb.co/5LPXSfn/Lenna-test-image.png);
    }
    
    a:nth-of-type(2) {
      background-image: url(https://i.ibb.co/ZHvWsKb/o1z7p.jpg)
    }
    
    a:last-of-type {
      background-image: url(https://i.ibb.co/tmQZgJb/68eb2df1a189f88bb0cbd47a3e00c112.png)
    }
    
    iframe {
      width: 70vw
    }
    <div class="containerA">
      <a href='https://example.com' target='brand'></a>
      <a href='https://plnkr.co' target='brand'></a>
      <a href='https://codepen.io' target='brand'></a>
    </div>
    <iframe name="brand"></iframe>

    演示 2

    $('.containerA').click(function(e) {
      var url = $(this).data('url');
      $('#brand').attr('src', url);
    });
    .containerA {
      width: 70vw;
      height: 30vh;
      outline: 1px dashed red;
      background: url(https://i.ibb.co/ZHvWsKb/o1z7p.jpg)no-repeat center;
      background-size: contain;
      cursor: pointer;
    }
    
    iframe {
      width: 70vw
    }
    <div class='containerA' data-url='https://example.com'></div>
    <iframe id='brand' src='about:blank'></iframe>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    【讨论】:

      【解决方案2】:

      $(document).ready(function() {
        $("#containerA").click(function(e) {
          e.preventDefault();
          //use iframe id as selector
      $("#brand").attr("src", $('#containerA a').attr("href"));
        })
      
      });
      .containerA {
        width: 140px;
        height: 99px;
      }
      
      .containerA:hover {
        background: url("img/imageB_05.jpg") no-repeat;
        background-size: contain;
      }
      
      .imageA:hover {
        opacity: 0;
      }
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
      <div class="containerA" id="containerA" style="width: 140px; height: 99px">
      <a href="http://something.com">xxx</a>
      </div>
      
      <iframe id="brand" src="http://www.blah.com">

      【讨论】:

        【解决方案3】:

        // div #containerA 没有 HREF 属性,因为它不是 A 标签

        // 这需要是#brand 并且$(this) 指向没有href 值的#containerA

        <div class="containerA" id="containerA" style="width: 140px; height: 99px">
           <a href="http://something.com">Something</a>
        </div>
        
        
        $(document).ready(function() {
           $("#containerA").click(function(e) {
             e.preventDefault();
             $("#brand").attr("src", $('#containerA a').attr("href"));
          })
        });
        

        【讨论】:

        • 我不知道谁投了反对票...但是如果您添加一个 sn-p,我会赞成它作为一个好的答案...
        猜你喜欢
        • 1970-01-01
        • 2011-08-26
        • 2012-05-15
        • 2021-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多