1. JavaScript / Говнокод #18158

    +142

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    (function($){
    
      function pickMenuByHash(hash) {
    
        if(hash == undefined || hash == '' || hash == '#')
          hash = '#home'; // хеш по умолчанию
    
        // Выбираем ссылки с нужным хешем, чтро бы потом присвоить им класс "active"
        var A_tags = $('a[href="' + hash + '"]');
        
        // Ищем все ссылки в родительском теге UL относительно ссылок и удаляем у них классы "active"
        A_tags.parents('UL').find('a').removeClass('active');
    
        // Добавляем к ссылкам с нужным нам хешем класс "active"
        $('a[href="' + hash + '"]').addClass('active');
      }
    
      // Обновить состояние менюшек (сверху и справа) при загрузке страницы
      $(function(){
        pickMenuByHash(document.location.hash);
      });
    
      // При изменении хеша обновить состояния менюшек (сверху и справа)
      $(window).on('hashchange', function(){
        pickMenuByHash(document.location.hash);
      });
    
    })(jQuery);

    Вот тебе при изменении хеша на сайте верхнее и правое меню будет в актуальном для хеша состоянии.

    Запостил: littlefuntik, 13 Мая 2015

    Комментарии (22) RSS

    • не лучший подход, я бы это делал непосредственно по ссылкам
      Ответить
      • как это?
        Ответить
      • ну за 3 минуты наваял, ясное дело что первое в голову взбредет, в консоли хрома)
        Ответить
        • что значит как? при клике на ссылку active с других ссылок, которые в группе находятся меняется, а на эту вешается.
          Ответить
    • Зачем нужна эта хня: (function ($) { ... })(jQuery); ?
      Ответить
      • $ теоретически может быть зохвачен как-нибудь mootools
        Ответить
        • Теоретически и jQuery может быть зохвачен каким-нить kokokotools
          Ответить
          • Ну это уже менее вероятно ;)
            Ответить
          • >$ теоретически может быть зохвачен как-нибудь mootools
            mootools
            Ответить
        • Скорее $ может быть захвачен каким-нибудь Prototype. Тот же Твиттор сначала писали на Prototype, потом переводили на jQuery.

          Страшнее всего, что $ может быть захвачен jQuery. Я серьёзно: http://api.jquery.com/jQuery.noConflict/

          У нас даже был ГК, в котором было подключено одновременно несколько версий jQuery.
          Ответить
          • Месье знает толк.
            Ответить
          • А нам как-то попалась либа, которая воровала жквери, вызывая noConflict() и заныкивая результат куда-то в свои недра. В результате код, идущий после неё, тупо ломался.

            Причём пока на сайте было 2 жквери разных версий - всё было ок. А сломалось именно тогда, когда лишнюю убрали...

            Пойду подключу десяток жквер про запас, вдруг ещё кто-то украдёт.
            Ответить
            • Это ещё что. Как-то раз верстальщик сломал сайт, случайно подключив дважды один и тот же ЭКМАСкрипт с jquery ui. Оказалось случилось вот что:
              1. Давным давно ЭКМАБлядь подключает jquery.ui.js во имя всех свистелок и перделок.
              2. Вёрстку распидорашивает, ЭКМАБлядь негодует, винит других ЭКМАБлядей, написавших jquery ui.
              3. ЭКМАБлядь применяет скилы обезьяньего патчинга и засирания прототипов (да, да, ЭКМАУебаны, то, за что вы так любите своё говно) и переопределяет не понравившиеся функции прямо в jQuery.fn.
              4. Заказчик доволен, ЭКМАПитух получает квартальную премию и идёт бухать с пацанами с района.
              5. Через n лет тот самый верстальщик подключает тот самый ЭКМАСкрипт
              6. Всё снова летит к хуям на совершенно другой странице, на которую оба участника этой истории ни разу в жизни не заглядывали.
              Нормальные такие ЭКМАБудни. И Теперь эти ушлёпки тащат своё НОДОЭКМАДЕРЬМО на сервера. Надеюсь банк, в котором эти кретины будут хранить свою зряплату, однажды снимет у них со счёта undefined рублей, после чего у них навсегда останется NaN в валюте [Object object]. ЗАТО АСИНХРОННО
              Ответить
              • ЭКМАСКРИПТ — Новый мем ньюфагов. Если ты используешь слово ЭКМАСкрипт, твой пинус длиннее автоматически, ты крут и плевал на всех. Кто-то предлагает соснуть хуйца? Он ЭКМАСкрипт. Кто-то фейлит или троллит? Он ЭКМАСкрипт. Заебали куклофаги? ЭКМАСкрипт. Быдло? Небыдло? То же самое. Кто-то опускает тебя в треде, который ты создал? Знай, он ЭКМАСкрипт. Выебали нигры? Это НАСТОЯЩИЙ ЭКМАСкрипт. Ничего не бойся, со словом ЭКМАСкрипт ты превратишь всех в говно. Дерзай же!
                Ответить
            • Ну как, подключил?
              Ответить
        • Так вот оно чё
          Ответить
      • Жабоскриптовый модуль ;)
        Ответить
      • ну и плюс инкапсуляция приватных переменных, все дела
        Ответить

    Добавить комментарий