Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 22.02.2014
Сообщений: 14

подскажите, как оптимизировать код

22.02.2014, 11:38. Показов 1143. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, js только начал изучать, но стоит вопрос..как не городить кучу кода, и оптимизировать данное...понимаю, что надо создать функцию, и вызывать её с параметрами. Но что-то не получается. Подскажите пожалуйста!)

JavaScript
1
2
3
4
5
$.ajax({type: \"GET\",
url: \"cart.php\",
data: \"add=$group&id=$id\",
 success: function(msg){\$(\"#item-count\").text(msg);$(\".added$id\").animate({opacity:1},2000); $(\".added$id\").animate({opacity:0});}});
return false;'
Это стоит на событие ссылки OnClick, в итоге при 100 ссылках, например, вес страницы значительно увеличивается.

Своеобразная корзина.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.02.2014, 11:38
Ответы с готовыми решениями:

Как оптимизировать код ?
Как привести его в порядок ? $(document).ready(function(){ var otherVideo = $('div.video-item'); ...

можно ли как-то оптимизировать данный код
Добрый день, подскажите можно ли как-то оптимизировать данный код: /////Для окраски пунктов при скроле///////////////// var...

Как можно оптимизировать (уменьшить) данный код?
<script> $('#save').click(function () { // add loading image to div $('#loading').html('<center><img...

16
 Аватар для FaCkeR
234 / 114 / 2
Регистрация: 22.11.2013
Сообщений: 61
22.02.2014, 22:32
Переменные $group и $id подставляются сервером? Если да то сделайте так:

Ссылки:
HTML5
1
<a class="link" data-id="$id" data-gruop="$group">Ссылка</a>
А в head:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$(document).ready(function(){
    $('.link').on('click', function(){
        var group = $(this).data('gruop');
        var id =  $(this).data('id');
        $.ajax({type: "GET",
            url: "cart.php",
            data: "add="+group+"&id="+id,
            success: function(msg){
                $("#item-count").text(msg);
                $(".added"+id).animate({opacity:1},2000);
                $(".added"+id).animate({opacity:0});
            }
        });
    });
});
0
0 / 0 / 0
Регистрация: 22.02.2014
Сообщений: 14
23.02.2014, 12:27  [ТС]
FaCkeR, привет, чего-то не получилось...

Да, группа и ид приходят со стороны сервера.
0
 Аватар для FaCkeR
234 / 114 / 2
Регистрация: 22.11.2013
Сообщений: 61
23.02.2014, 12:56
Что у вас конкретно не получается?
http://jsfiddle.net/u9SgC/
HTML5
1
2
3
4
5
6
<a class="link" data-id="1" data-gruop="1">Ссылка-1</a><br>
<a class="link" data-id="2" data-gruop="1">Ссылка-2</a><br>
<a class="link" data-id="3" data-gruop="2">Ссылка-3</a><br>
<a class="link" data-id="4" data-gruop="2">Ссылка-4</a><br>
<a class="link" data-id="5" data-gruop="3">Ссылка-5</a><br>
<a class="link" data-id="6" data-gruop="3">Ссылка-6</a><br>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$(document).ready(function(){
    $('.link').on('click', function(){
        var group = $(this).data('gruop');
        var id =  $(this).data('id');
        alert("id: "+id+", group: "+group);
        /*$.ajax({type: "GET",
            url: "cart.php",
            data: "add="+group+"&id="+id,
            success: function(msg){
                $("#item-count").text(msg);
                $(".added"+id).animate({opacity:1},2000);
                $(".added"+id).animate({opacity:0});
            }
        });*/
    });
});
 Комментарий модератора 
Код должен присутствовать в тексте сообщения. Песочницы — это лишь бонус для демонстрации.
0
0 / 0 / 0
Регистрация: 22.02.2014
Сообщений: 14
23.02.2014, 13:21  [ТС]
FaCkeR, да, странно. тут работает. Помещаю код jquery в хед.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 <script>
 
       $(document).ready(function(){
              $("#item-count").load("cart.php","");
 
               $('.link').on('click', function(){
                   var group = $(this).data('gruop');
                   var id =  $(this).data('id');
                   $.ajax({type: "GET",
                       url: "cart.php",
                       data: "add="+group+"&id="+id,
                       success: function(msg){
                           $("#item-count").text(msg);
                           $(".added"+id).animate({opacity:1},2000);
                           $(".added"+id).animate({opacity:0});
                       }
                   });
 
           });
        });
    </script>


ссылки в скрипте выглядят так:

PHP/HTML
1
<a data-id=\"$id\" data-gruop=\"$group\" class=\"link\">Добавить в корзину</a>

Сервер:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
session_start();
if (!isset($_SESSION['sessid'])) {
 
 
    $_SESSION['sessid'] = rand(0,100);
 
 
}
 
 
if (isset($_GET['add']) and isset($_GET['id'])) {
    
 
    $_SESSION['group'] = $_SESSION['group'] . $_GET['add'] . ";";
    $_SESSION['id'] = $_SESSION['id'] . $_GET['id'] . ";";
 
 
 
 
 
}
 
echo "Товаров в корзине: "  . (count(explode(";", $_SESSION['id']))-1);
 
 
?>
Ничего не возвращается почему-то...а как только своё возвращаю, то всё норм.

Добавлено через 14 минут
хм, попробовал алертом проверить, не появляется.
0
 Аватар для FaCkeR
234 / 114 / 2
Регистрация: 22.11.2013
Сообщений: 61
23.02.2014, 13:33
Проверил у себя на локалке, работает.
Количество товаров в див выводится, так что ищите ошибку у себя.
1
0 / 0 / 0
Регистрация: 22.02.2014
Сообщений: 14
23.02.2014, 15:58  [ТС]
FaCkeR, да, в новом тоже работает, спасибо!) буду искать ошибку.

Добавлено через 23 минуты
FaCkeR, я нашёл кажется...но не понимаю. В общем когда страница генерируется, все ссылки автоматом получают какой-то url почему-то. т.е если страница имеет url "route.php?group=isolatori&type=schtirev oi&id=213". То и ссылка , которая находится на странице(добавить в корзину)почему-то тоже имеет тот же url. В новом документе этого нет. С чем это может быть связано? атрибут href не указываю...

Добавлено через 28 минут
В общем on.click событие не срабатывает. вообще не понимаю в чём дело....уже пол дня маюсь(
Отключал другие скрипты, не помогает.

Добавлено через 18 минут
Я уже не знаю, что и делать. может ли быть такое, что по скольку страница создаётся путём подключения(include'а) блоков...а обработчики jquery вешаются при document.ready. Может они не успевают повесится? т.к блок head(тайтл,начальная разметка, скрипты, стили и т.д) у меня в отдельном файле. Т.е по скольку он идёт первым(блок хед) при его подключении сразу же считается, что документ загружен, и он пытается повесить обработчики? Но элементов(ссылок) ещё нет, и получается, что он работает в пустую...или я уже фигню несу? Так как если напрямую прописать алерт, в онКлик ссылки, то он срабатывает, а если в jquery в хеде, то нет.
0
 Аватар для FaCkeR
234 / 114 / 2
Регистрация: 22.11.2013
Сообщений: 61
23.02.2014, 16:29
Цитата Сообщение от cold-october Посмотреть сообщение
атрибут href не указываю
href не указываете совсем? или указываете пустой? если пустой, то вставьте в href="javascript:void(0)" или
добавить в скрипт строку e.preventDefault();
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(document).ready(function(){
    $('.link').on('click', function(e){ //не забудьте про добавление аргумента
    e.preventDefault(); // отмена действия по умолчанию для события
        var group = $(this).data('gruop');
        var id =  $(this).data('id');
        //alert("id: "+id+", group: "+group);
        $.ajax({
            type: "GET",
            url: "cart.php",
            data: "add="+group+"&id="+id,
            success: function(msg){
                $("#item-count").text(msg);
                $(".added"+id).animate({opacity:1},2000);
                $(".added"+id).animate({opacity:0});
            }
        });
    });
});
Цитата Сообщение от cold-october Посмотреть сообщение
может ли быть такое, что по скольку страница создаётся путём подключения(include'а) блоков
нет, include происходит на сервере, а в браузер приходит готовый html. Если сомневаетесь перенесите код скрипта в конец страницы перед </body>.
0
0 / 0 / 0
Регистрация: 22.02.2014
Сообщений: 14
23.02.2014, 17:30  [ТС]
FaCkeR,
Точно, про инклуд сморозил конечно...скрипт же пока не закончит выполнение, не показывает страницу.
Думал может с именем класса что-то, менял - не помогло...
Попробовал использовать это, не помогло. Тупо не работает даже это:

JavaScript
1
2
3
4
5
6
7
8
    <script>
 
        $(document).ready(function(){
          $('.link').on('click', function(){
                alert("llalal");
            });
        });
    </script>
Если алерт в онклик, то всё норм.

Добавлено через 14 минут
Может попробовать через функцию с аргументами через онКлик? Передаваться будут так же $id и $gruop. Правда не знаю как записать.
0
 Аватар для FaCkeR
234 / 114 / 2
Регистрация: 22.11.2013
Сообщений: 61
23.02.2014, 17:50
Хотите в onClick тогда так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
function addCart(id, group){
    alert("id: "+id+", group: "+group);
    /*$.ajax({
        type: "GET",
        url: "cart.php",
        data: "add="+group+"&id="+id,
        success: function(msg){
            $("#item-count").text(msg);
            $(".added"+id).animate({opacity:1},2000);
            $(".added"+id).animate({opacity:0});
        }
    });*/
};
HTML5
1
<a href="javascript:void(0);" onClick="addCart($id, $group)">Ссылка</a>
http://jsfiddle.net/Y6rg5/1/
0
0 / 0 / 0
Регистрация: 22.02.2014
Сообщений: 14
23.02.2014, 22:59  [ТС]
FaCkeR, спасибо за труды, но это тоже не пашет. Ладно, придётся сидеть и перековыривать тогда вообще всё...получается клик работает, но функции не вызывает. Вообще бред какой-то. В html id и group подставляются верно.
0
 Аватар для FaCkeR
234 / 114 / 2
Регистрация: 22.11.2013
Сообщений: 61
23.02.2014, 23:07
А вы случаем консоль не открывали, не смотрели что там творится?
0
0 / 0 / 0
Регистрация: 22.02.2014
Сообщений: 14
24.02.2014, 10:28  [ТС]
FaCkeR, проверил, при формировании страницы такая вот ошибка.
Uncaught TypeError: Object #<Object> has no method 'on' . Т.е всё-таки обработчик не вешается почему-то.
0
 Аватар для FaCkeR
234 / 114 / 2
Регистрация: 22.11.2013
Сообщений: 61
24.02.2014, 11:50
Какая у вас версия jquery? метод .on() появился в версии 1.7, попробуйте место .on() поставить .bind()

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(document).ready(function(){
    $('.link').bind('click', function(e){ //не забудьте про добавление аргумента
        e.preventDefault(); // отмена действия по умолчанию для события
        var group = $(this).data('gruop');
        var id =  $(this).data('id');
        //alert("id: "+id+", group: "+group);
        $.ajax({
            type: "GET",
            url: "cart.php",
            data: "add="+group+"&id="+id,
            success: function(msg){
                $("#item-count").text(msg);
                $(".added"+id).animate({opacity:1},2000);
                $(".added"+id).animate({opacity:0});
            }
        });
    });
});
0
0 / 0 / 0
Регистрация: 22.02.2014
Сообщений: 14
24.02.2014, 13:47  [ТС]
FaCkeR, это очень и очень странно) версия последняя, в новом документе то до этого работало, а здесь сработало только с биндом)

Вообщем теперь кликает, но переменные = undefined.

Request URL:http://........./cart.php?add=... =undefined
Request Method:GET
Status Code:200 OK
Referer:http://........../viewitem.php... tori&id=39
X-Requested-With:XMLHttpRequest
Повотрюсь, что они подставляются верно...Количество меняется, но по сути добавляется пустота, т.к undefined

И не анимируется элемент кстати, хотя номер тоже подставляется.
0
 Аватар для FaCkeR
234 / 114 / 2
Регистрация: 22.11.2013
Сообщений: 61
24.02.2014, 16:10
Такое ощущение что у вас jquery версии этак 1.4, потому метод .data() и не получает данные с атрибутов.
попробуйте так

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(document).ready(function(){
    $('.link').bind('click', function(e){
    e.preventDefault();
        var group = $(this).attr('data-gruop');
        var id =  $(this).attr('data-id');
        //alert("id: "+id+", group: "+group);
        $.ajax({
            type: "GET",
            url: "cart.php",
            data: "add="+group+"&id="+id,
            success: function(msg){
                $("#item-count").text(msg);
                $(".added"+id).animate({opacity:1},2000);
                $(".added"+id).animate({opacity:0});
            }
        });
    });
});
0
0 / 0 / 0
Регистрация: 22.02.2014
Сообщений: 14
24.02.2014, 20:54  [ТС]
FaCkeR, всё, работает, спасибо за помощь)) странно...я же говорю, что библиотеку копировал из одного проекта в другой, и там всё работало(в новом)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.02.2014, 20:54
Помогаю со студенческими работами здесь

Как правильно написать (оптимизировать) код для меню?
Есть менюшка из заголовков, сам список выежает при нажатии на заголовок (метод .slideToggle ). Назначил каждому списку и заголовку свои...

javascrip: подскажите как оптимизировать
ситуация такова(начну издалека): у меня есть список товаров(вернее, меню ) каждому товару соответствует айди в базе и т.д. Я делаю выборку...

Как можно оптимизировать код генерации шахматной доски?
генерация шахматной доски - как можно оптимизировать? У меня для чередования записи чёрной/белой клетки используется отдельная переменная,...

Можно ли оптимизировать код
Доброго вечера. Есть небольшой кусок кода, можно ли как-то его упростить? (потому что идет дубляж кода, а это не очень правильно, но в то...

Помогите оптимизировать мой код
Реально уменьшить этот код где-то на 5 Кб (чем он меньше - тем лучше) но так чтобы все осталось примерно так...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru