Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Упростить скрипт


Автор: Predator199 4.4.2013, 15:07
Помогите пжл, как можно максимально упростить скрипт?
Код

    function on(id,time){
        var f = $('.right .hed_inf span:first'), l = $('.right .hed_inf span:last'), ring = $('.right ul');
        if(time){
           setInterval(function(){
                jaix(3,2+'&pm='+id['on'], this, function(result){
                    f.html(result.p); l.html(result.g);    
                    $('.right .hed_inf font').html(result.v)      
                    ring.html(result.msg);    
                    var items = $('.right ul li'),
                    cb = function(){};
                    items.css({display:'none'});
                    for (var i = items.length;i--;) {
                        (function(item){
                            var callback = cb;
                            cb = function(){
                                $(item).slideDown(400, callback);
                            };
                        })(items[i]);
                    };
                    cb(); cl('#jaix');    
                });    
            }, time)    
        }else{
                jaix(3,2+'&pm='+id['on'], this, function(result){
                    f.html(result.p); l.html(result.g);    
                    $('.right .hed_inf font').html(result.v)      
                    ring.html(result.msg);    
                    var items = $('.right ul li'),
                    cb = function(){};
                    items.css({display:'none'});
                    for (var i = items.length;i--;) {
                        (function(item){
                            var callback = cb;
                            cb = function(){
                                $(item).slideDown(400, callback);
                            };
                        })(items[i]);
                    };
                    cb(); cl('#jaix');    
                });
        }
    }


Просто в одном случаи нужно сетинтервал использовать ,а в другом нет.

Автор: Aliance 4.4.2013, 16:01
Код

    function on(id, time) {
        var f = $('.right .hed_inf span:first'),
            l = $('.right .hed_inf span:last'),
            ring = $('.right ul');
        if (time) {
            (function(on) {
                setInterval(function() { ololo(on); }, time);
            })(id.on);
        } else {
            ololo(id.on);
        }
    }

    function ololo(on) {
        jaix(3, 2 + '&pm=' + , this, function (result) {
            f.html(result.p);
            l.html(result.g);
            $('.right .hed_inf font').html(result.v);
            ring.html(result.msg);
            var items = $('.right ul li'),
                cb = function () {};
            items.css({
                display: 'none'
            });
            for (var i = items.length; i--;) {
                (function (item) {
                    var callback = cb;
                    cb = function () {
                        $(item).slideDown(400, callback);
                    };
                })(items[i]);
            }
            cb();
            cl('#jaix');
        });
    }


Вот так лучше не писать:
Код

            items.css({
                display: 'none'
            });

когда есть
Код

items.hide();


Далее, создавать функция внутри цикла может быть опасно в плане производительности. Выясни, реально ли это нужно.
Ну и кроме того, пользуйся tidy и jshint у http://jsfiddle.net/ для корректного и красивого js-кода.

Автор: Predator199 4.4.2013, 17:01
Спс. А подскажите более простой вариант.
Есть строчки "li", в блоке я их заменяю через html.Далее присвайваю none или hide(). Далее  разбираю массив  и по очериде их показываю.
Или можно  код, не использовать slid. А показывать по очереди но использовать 
Код

.animate({opacity:"toggle"}, "slow")
.

Автор: Aliance 4.4.2013, 18:29
Цитата(Predator199 @  4.4.2013,  18:01 Найти цитируемый пост)
Далее присвайваю none

Цитата(Predator199 @  4.4.2013,  18:01 Найти цитируемый пост)
не использовать slid

Ты вообще читаешь что ты пишешь? Как можно понять, что здесь имелось ввиду?

Код

.animate({opacity:"toggle"}, "slow")

фактически тоже самое что и
Код

.fadeOut("slow")

Автор: Predator199 4.4.2013, 18:54
Цитата(Aliance @  4.4.2013,  18:29 Найти цитируемый пост)
Цитата(Predator199 @  4.4.2013,  18:01 )
не использовать slid


Ну правильно, slid. Я имел  slideDown.
Сделать анимацию. Подгрузили одну строчку li, добавили в блок и так с каждой. Когда добавляем строчку, используем animate ,а не slideDown.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)