使用Jquery延迟加载特定元素

时间:2011-07-28 15:51:33

标签: php jquery delay lazy-loading

我是一个JS / JQ菜鸟试图延迟加载某些元素,直到页面的其余部分加载完毕。

具体来说,每页有几个列表包含社交媒体iframes /远程脚本作为列表项,其网址是用php生成的。

我最好的猜测是这样的(内联):

$(document).ready(function(){
    $('ul.post-meta-bottom').append('                               
                                <li class="like-button">
                                    <iframe class="fblikebutton" src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode($this_permalink); ?>&amp;layout=button_count&amp;show-faces=false&amp;width=80&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="overflow:hidden; width:80px; height:30px"></iframe>
                                </li><!--like-button-->

                                <li class="tweet-button">
                                    <a href="http://twitter.com/share" class="twitter-share-button" data-url="<?php echo $this_permalink; ?>" data-text="<?php echo $this_title; ?>" data-count="horizontal" data-via="" data-related="">Tweet</a>
                                    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
                                </li><!--tweet-button-->

                                <li class="reddit-button">
                                    <script type="text/javascript">
                                        reddit_url = "<?php echo urlencode($this_permalink); ?>";
                                        reddit_title = "<?php echo $this_title; ?>";
                                        reddit_target= "gaming";
                                    </script>

                                    <script type="text/javascript" src="http://www.reddit.com/static/button/button1.js"></script>
                                </li><!--reddit-button-->
                            ')
});

......哪些不起作用,我确信无论如何都不是最好的方法。

有人愿意帮忙吗?谢谢!

2 个答案:

答案 0 :(得分:0)

你可以使用load()(因为你说这是内联的,我想你在发送javascript之前回复了php的值 - 一切都在服务器端完成):

$(document).ready(function(){
    $('.post-meta-bottom').load(function(){
                           $(this).append('<ul>
                                     <li><?php echo facebook_iframe_stuff; ?></li>
                                     <li><?php echo reddit_javascript_stuff; ?></li>
                                     <li><?php echo dynamic_twitter_link; ?></li>
                                     <li><?php echo etc_etc; ?></li>
                                   </ul>');
     });
});

取自文件:

  

当load元素和所有子元素都有时,load事件被发送到元素   已完全装满。此事件可以发送到任何元素   与URL相关联:图像,脚本,框架,iframe和   窗口对象。

答案 1 :(得分:0)

我不是jQuery专家,但为什么不使用.delay(time)