【问题标题】:load img only when popup appear仅在弹出窗口出现时加载 img
【发布时间】:2012-01-11 07:13:39
【问题描述】:

首先,我是 jQuery 或 AJAX 的初学者。

我在一个网页上有大约 50 多个链接,每个链接都有一个 div#popup,其中包含一个表格和一个 img。这意味着当页面加载时大约有 50 张图片正在加载,这会大大降低网站速度。

所以我想知道是否有办法只在鼠标悬停链接时加载图片?\

这是我正在使用的代码和脚本。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>jQuery Popup Div on hover Test</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    var moveLeft = 20;
    var moveDown = 10;

    $('a#trigger').hover(function(e) {
        $('div#pop-up').show();
    }, function() {
        $('div#pop-up').hide();
    });

    $('a#trigger').mousemove(function(e) {
        $("div#pop-up").css('top', e.pageY + moveDown).css('left', e.pageX + moveLeft);
    });
});
</script>
<style type="text/css">
.wpm_pag.mng_lts_chp.grp .det a.ttl{
    color: #0000ff;
    font-size:16px;
    line-height:12px;
    height:14px;
    display:block;
    padding:0 0 2px 0
}    

.wpm_pag.mng_lts_chp.grp .det div#pop-up table tr td img{
    border: 1px solid #e74f25;
}

.wpm_pag.mng_lts_chp.grp .det div#pop-up table{
    margin:0;
    background-color:#656565;
}

.wpm_pag.mng_lts_chp.grp .det div#pop-up table tr.firstR{
    background-color:black;
    height: 30px;
    font-size: 120%;
}

.wpm_pag.mng_lts_chp.grp .det div#pop-up table tr td.otherRow{
    height: 20px;
}

.wpm_pag.mng_lts_chp.grp .det div#pop-up table tr td.otherRow b{
    color: #3C3C3C;
}

/* Popup CSS */
.wpm_pag.mng_lts_chp.grp .det div#pop-up {
    display: none;
    position: absolute;
    padding: 0px 5px 5px 5px;
    background-color: #000;
    color: #FFF;
    border: 1px solid #1a1a1a;
    font-size: 110%;
    font-family:"Comic Sans MS", cursive, sans-serif;
}

</style>


</head>
<body>
<div class="wpm_pag mng_lts_chp grp">
    <div class="det">
        <p><a href="#" class="ttl" id="trigger">this link</a></p>
    <!-- HIDDEN / POP-UP DIV -->
    <div id="pop-up">
      <table width="650px" cellspacing="0" cellpadding="2px">
            <tr class="firstR">
                <td colspan="3">Nenee! Ane Tokitoki Kanojo</td>
                <td style="text-align: right;" width="25%">Rating</td>
            </tr>
            <tr>
                <td width="200px" rowspan="4"><img height="200" width="200" src ="http://gooddealstore.us/icon/test.jpg" alt="xxx" /></td> /** php echo url
                <td class="otherRow" colspan="3"></td>
            </tr>
            <tr>
                <td class="otherRow"><b>Release:</b></td> /** php 
                <td class="otherRow"><b>Author:</b></td>    echo
                <td class="otherRow"><b>Artist:</b></td>   **/
            </tr>
            <tr>
                <td class="otherRow" colspan="3"><b>Genres:</b></td>
            </tr>
            <tr>
                <td style="vertical-align: top;" colspan="3"></td>
            </tr>
        </table>
    </div>

  </div>
</body>
</html>

【问题讨论】:

    标签: jquery css ajax


    【解决方案1】:

    我会给每个锚标记 url 并制作像这样的标记jsfiddle

    HTML:

    <ul>
        <li><a href="http://placehold.it/100x100" class="imageLink">Image 1</a></li>
        <li><a href="http://placehold.it/100x110" class="imageLink">Image 2</a></li>
        <li><a href="http://placehold.it/100x90" class="imageLink">Image 3</a></li>
    </ul>
    <div id="imageContainer">
    </div>
    

    js

    var l = $(".imageLink").click(function(e) {
        e.preventDefault();
    }).hover(function(e) {
        var imageUrl = $(this).attr('href'),
            container = $('#imageContainer').show(),
            image = $("#imageContainer > img[src='" + imageUrl + "']");
        if(image.length > 0) {
            image.show();
        } else {
            container.append("<img src='" + imageUrl + "' />");
        }
    }, function() {
        $('#imageContainer, #imageContainer > img').hide();
    });
    

    我所做的是使用锚点中的​​ href 向 dom 添加图像。如果元素已经存在(我使用他们的src 检查 div 中的图像)我只是显示图像。如果我们将此想法应用于您的示例,我会给td 元素一个idimageContainer,以便将图像元素添加到那里。

    【讨论】:

    • 喜欢这个? gooddealstore.us/icon/test.jpg" class="imageLink"> 但是img没有出现!
    • 在我的示例中,锚点等于#trigger。我想你会有很多这样的?
    • 是的,当鼠标悬停在链接上时,我需要一个脚本来在表格中加载 标记。例如:我有一个 Text 当鼠标悬停“文本”时会出现一个弹出窗口,并且弹出窗口内的 标记将加载。
    • 好吧,我的例子正是你想要的,只是它使用了一个 div。接受这个想法,并在 table 和 td 元素的上下文中使用它。
    【解决方案2】:

    您可能想看看这个 jQuery 插件:http://www.appelsiini.net/projects/lazyload 和 YUI 2 Imageloader http://developer.yahoo.com/yui/imageloader/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      相关资源
      最近更新 更多