【问题标题】:JQuery code taking too much time to loadJQuery 代码加载时间过长
【发布时间】:2014-06-17 10:10:33
【问题描述】:

我已经为简单的点击事件编写了一个 jquery 代码,但是我没有使用循环。 这就是为什么 but_4 和 but_3 的点击事件需要花费大量时间来响应的原因吗? 以下是我的代码:

$(document).ready(function(){
$('.modulename').animate({left:'15px',opacity:'1'},2000,function(){
      $('.eventone,.rule_1,.faq_1,.cont_1,.spons_1').animate({right:'45px',opacity:'1'},1000,function(){
             $('.eventtwo,.rule_2,.faq_2,.cont_2,.spons_2').animate({left:'10px',opacity:'1'},1000,function(){
            $('.eventthree,.rule_3,.faq_3,.cont_3,.spons_3').animate({right:'45px',opacity:'1'},1000,function(){
                $('.eventfour,.rule_4,.faq_4,.cont_4,.spons_4').animate({left:'10px',opacity:'1'},1000);
            });
        });
    });
});

    var $open = null;
$('.but1_1').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.rule_1').slideToggle();
    $open = $('.rule_1');
});
$('.but1_2').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.faq_1').slideToggle();
    $open = $('.faq_1');
});
$('.but1_3').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.cont_1').slideToggle();
    $open = $('.cont_1');
});
$('.but1_4').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.spons_1').slideToggle();
    $open = $('.spons_1');
});

$('.but2_1').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.rule_2').slideToggle();
    $open = $('.rule_2');
});
$('.but2_2').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.faq_2').slideToggle();
    $open = $('.faq_2');
});
$('.but2_3').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.cont_2').slideToggle();
    $open = $('.cont_2');
});
$('.but2_4').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.spons_2').slideToggle();
    $open = $('.spons_2');
});

$('.but3_1').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.rule_3').slideToggle();
    $open = $('.rule_3');
});
$('.but3_2').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.faq_3').slideToggle();
    $open = $('.faq_3');
});
$('.but3_3').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.cont_3').slideToggle();
    $open = $('.cont_3');
});
$('.but3_4').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.spons_3').slideToggle();
    $open = $('.spons_3');
});

$('.but4_1').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.rule_4').slideToggle();
    $open = $('.rule_4');
});
$('.but4_2').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.faq_4').slideToggle();
    $open = $('.faq_4');
});
$('.but4_3').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.cont_4').slideToggle();
    $open = $('.cont_4');
});
$('.but4_4').click(function(){
    if($open != null)
        $open.slideToggle();
    $('.spons_4').slideToggle();
    $open = $('.spons_4');
});
});

请任何人提出更好的方法来编写此代码以便快速响应?

【问题讨论】:

  • 你能制作一个 jsfiddle 以便我们测试它吗?另外,尝试使用 stop().animate(...) 而不是 .animate(),以确保动画不会排队。
  • animate() 函数导致了问题。我硬编码了 but* div 的左边距。现在它可以正常工作了。

标签: jquery html web jquery-click-event


【解决方案1】:

在所有可能对您有帮助的函数中添加 else 语句

$('.but3_1').click(function(){
if($open != null)
 {
    $open.slideToggle();
 }
 else
 {
    $('.rule_3').slideToggle();
    $open = $('.rule_3');
 }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2016-06-20
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多