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

    +168

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    $(document).ready(function () {
    	$("a").easyTooltip()
    });
    $(document).ready(function () {
    	$("img").easyTooltip()
    });
    $(document).ready(function () {
    	$("span").easyTooltip()
    });

    Отформатировал для лучшего усваивания.

    Запостил: UnderShot, 05 Февраля 2011

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

    • В чем говнокод? Кроме того, что нужно было использовать $(document).ready(function () {...} один раз.
      Ответить
    • $(document).ready(function () {
      $("a,img,span").easyTooltip();
      });
      Ответить
      • давно пора выкидывать говняные плагины и юзать что-то типа:
        $('.namespace-tooltip').live('mouseover', function() {
          namespace.showTooltip.call(this);
        });
        Ответить
        • чем это лучше?
          Ответить
          • - не используется document.ready, значит скрипт будет работать до того как загрузятся все картинки и аналитиксы
            - нет привязки к тегу
            - будет работать с контентом добавленным после document.ready, без дополнительной инициализации
            Ответить
            • - селектор по классу работает медленнее, чем селектор по тегу+классу
              - live влечет за собой дополнительные издержки по времени выполнения. нужны подробности - читайте про способ реализации live метода на страничке http://api.jquery.com/live/ (раздел Event Delegation) или на русском языке тоже было, но ссылку сейчас не смогу сказать
              - $(document).ready(function () { будет работать сразу же после инициализации DOM
              Выдержка из мануала (http://api.jquery.com/ready/) :
              "The handler passed to .ready() is guaranteed to be executed after the DOM is ready, so this is usually the best place to attach all other event handlers and run other jQuery code"
              Ответить
              • - я в курсе как лайв работает, поэтому селектор по классу работает не медленнее селектора по тегу
                - дополнительные издержки не настолько велики, если конечно лайвом не злоупотреблять
                - там написано что код гарантирует срабатывание после инициализации ДОМа, но там не сказано что он вызывается сразу после инициализации ДОМа!

                Вы исходники изучали, что вы мне всё мануал да мануал? Лучший мануал - исходники!
                Ответить
                • кстати зря так сильно заминусовали товарища.
                  И хоть в первый двух пунктах прав Страйкер, но все же .ready() действительно выполняется после загрузки всех картинок, стилей и скриптов
                  Ответить
                  • Про картинки точно неправда
                    Ответить
                  • номада в тред, DOMContentLoaded же!
                    Ответить
                  • по поводу первых пунктов, можно еще поспорить, ибо live навешенный в хеде никаких поисков не делает (ибо документ пустой) и при срабатывании ивента делает простую проверку (естественно навешивать надо на простые селекторы), поэтому 10 лайвов лучше, чем когда после .ready вызовется 10 хендлеров, которые нагенерируют html'я подобавляют сотню другую новых хендлеров, обычно в это время наблюдаются тормоза, что не есть гуд. Так что в теории лайв делает работы больше, но делает её небольшими порциями незаметно для пользователя, а рэди обрабатывает всё сразу, а главное появляется куча гемороя по инициализвании свежезагруженных с помощью аджакса кусочков html'я.
                    Идеальный же вариант где-то посередине, в реди повесить делегейтом хендлеры на нужных контейнерах, таким образом и издержки сократятся до минимума и не будет тормозной инициализации
                    Ответить
                    • не используйте jquery и тормозов не будет ваще = )
                      Ответить
                      • Спасибо, буду пользоваться сверхшустрым prototypejs
                        Ответить
                        • :D

                          navite javascript+DOM2 самое то
                          Ответить
                          • неее, уж лучше jquery. Это я раньше был приверженцом лисапедов, сейчас я ленивый.
                            Ответить
                            • лень - двигателя прогресса. Не только вы ленивы, поэтому склепали jquery для быстрой разработки клиент-сайд.
                              впрочем, jquery не сильно медленный, т.е. на глаз незаметно - это все таки не флаш, где даже баннер грузит проц на 100%
                              Ответить
                              • Если десяток говноплагинов на реди парсят 100кб страницу сверстанную таблицами добавляя своих говнохендлеров, то быстрым он не покажется. Ну а если с умом, то быстро и красиво...
                                Ответить
                        • кстати, для тех, кто привык прожить в процедурном стиле есть еще xLib http://cross-browser.com
                          Ответить
                          • да ну, говноподход, это ж JS, чтобы блюсти парадигму надо ргототуры клозурить и всё такое
                            Ответить
                            • это древняя либа, существовавшая еще до jquery\prototype (и даже DOM) - просто функциональная обертка над разношерстной функциональностью броузеров на тот момент. Зато работает даже в древних броузерах, типа IE5 Opera7. Даже мой подарок 2004ого года, разработанный с помощью этой либы до сих пор полностью функционален (который где-то тут я зафайлхостил на япапку)
                              Ответить
                              • Заклинания.html на основах древнейшего шумерского манускрипта "x library", находится по адресу http://ifolder.ru/21730916
                                Ответить
    • btw 10 posts left
      Ответить

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