jquery appendTo 和 detach 以重播动画 gif

Posted

技术标签:

【中文标题】jquery appendTo 和 detach 以重播动画 gif【英文标题】:jquery appendTo and detach in order to replay animated gif 【发布时间】:2013-05-24 16:00:50 【问题描述】:

这是我的 js:

$(document).ready(function () 
    $lrgBanner = $('#panel');
    $lrgBanner.detach();

    $('#banner img').click(function () 
        $lrgBanner.appendTo('#ad').show();
        $('#banner').hide();
        console.log('banner was clicked');
    );

);

$('#close img').click(function () 
    $('#banner').show();
    $lrgBanner.detach();
    console.log('close was clicked');
);

还有 html

 <div id='ad'>

    <div id='banner'>
        <img src="img/hp-small.gif"  />
    </div>

    <div id='panel'>
        <div id='background'>
            <img src="img/hp-large.gif"  />
        </div>
        <div id='close'>
            <img src="img/btn_close.gif"  />
        </div>
    </div>

</div>

div #background 包含一个动画 gif。有人告诉我,使用 detach 和 appendTo 会重新启动 gif 内容,但它似乎不起作用。

我想知道尝试使用加载功能(或 #close img 点击功能上的卸载。

有人有什么建议吗?

提前致谢。

【问题讨论】:

你能提供一个jsfiddle吗? 抱歉,我制作了那个小提琴的 v5:jsfiddle.net/Gm7jt/5 我已经更新了答案,在 chrome 上的 jsfiddle 中工作。未测试其他浏览器 【参考方案1】:

你应该重置动画 gif 的 src 属性:

SEE DEMO

请注意,如果您不需要从全局范围访问变量,则不应将其设置为全局变量。

$(document).ready(function () 
     gifAnimated = $('#background img')[0],
     gifSrc = "http://mlkshk.com/r/R245.gif";
     $lrgBanner = $('#panel');
     $lrgBanner.detach();

     $('#banner img').click(function () 
         gifAnimated.src = gifSrc;
         $lrgBanner.appendTo('#ad').show();
         $('#banner').hide();
         console.log('banner was clicked');
     );

 );

 $('#close img').click(function () 
     $('#banner').show();
     $lrgBanner.detach();
     gifAnimated.src = "";
     console.log('close was clicked');
 );

【讨论】:

是的,虽然它在控制台中抛出错误,但它正在工作(我在你发布时正在调整它)。但我想我可以解决这个问题。非常感谢。 如果你说的是这个错误:“Uncaught TypeError: Cannot read property 'parent' of null” 它是相对于 jsfiddle,而不是代码 呵呵,有趣的是 jsfiddle 没有抛出错误,但我的本地版本的代码是。谢谢,它正在工作,但这是主要的。

以上是关于jquery appendTo 和 detach 以重播动画 gif的主要内容,如果未能解决你的问题,请参考以下文章

jquery

jQuery 中的 clone(true) + remove() 与 detach()

jQuery 文档操作方法

jQuery的dom操作转

停止 iframe 重新加载

jQuery HTML/CSS 方法大全