jQuery:单击并克隆错误

发布于 2024-11-27 20:29:41 字数 587 浏览 0 评论 0原文

单击链接,然后我想在克隆元素后执行动画。 但我却得到了意想不到的结果。要测试: http://jsfiddle.net/r4BVb/3/

在多个链接上单击(例如geek),克隆进行了很多次。

$('#clone').click(function(){
    $('.view_right').clone().prependTo('.overflowed');
    $('.view_right:last').css('display', 'none');
    $('.view_right:first').hide('slide', { direction: 'left' }, 300, function() {
        $('.view_right:last').show('slide', { direction: 'right' }, 300, function() {
           $('.view_right:first').remove();
        });
    });
});

我该如何解决这个问题?谢谢

Click on a link, then I'd like to execute an animation after cloning an element.
But I've unexpected results. To test : http://jsfiddle.net/r4BVb/3/

On multiple link click (like a geek), clone is proceed many times.

$('#clone').click(function(){
    $('.view_right').clone().prependTo('.overflowed');
    $('.view_right:last').css('display', 'none');
    $('.view_right:first').hide('slide', { direction: 'left' }, 300, function() {
        $('.view_right:last').show('slide', { direction: 'right' }, 300, function() {
           $('.view_right:first').remove();
        });
    });
});

How can I solve this ? Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

樱花落人离去 2024-12-04 20:29:41

这是解决方案:

var called = false;

$('#clone').click(function(){
    if (called) {
        return;
    }
    called = true;

    $('.view_right').clone().prependTo('.overflowed');
    $('.view_right:last').css('display', 'none');
    $('.view_right:first').hide('slide', { direction: 'left' }, 300, function() {
        $('.view_right:last').show('slide', { direction: 'right' }, 300, function() {
           $('.view_right:first').remove();

            called = false;

        });
    });
});

测试一下

Here is the solution:

var called = false;

$('#clone').click(function(){
    if (called) {
        return;
    }
    called = true;

    $('.view_right').clone().prependTo('.overflowed');
    $('.view_right:last').css('display', 'none');
    $('.view_right:first').hide('slide', { direction: 'left' }, 300, function() {
        $('.view_right:last').show('slide', { direction: 'right' }, 300, function() {
           $('.view_right:first').remove();

            called = false;

        });
    });
});

Test it

赏烟花じ飞满天 2024-12-04 20:29:41

您的代码将向 view_right 添加大量克隆,因此我建议检查您是否添加了太多这样的克隆:

if($('.view_right').length < 2) {

结果将是 http://jsfiddle.net/r4BVb/7/

Your code will add a lot of clones to view_right, so I suggest to check you're not adding too many like this:

if($('.view_right').length < 2) {

And the result will be http://jsfiddle.net/r4BVb/7/

烈酒灼喉 2024-12-04 20:29:41

看看这个: 使用 .one()

我有效地在动画后重新绑定点击,并且只听点击事件一次。

Check this out: Using .one()

I'm effectively rebinding the click after animation and only listening to the click event once.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文