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

    +153

    1. 1
    $("#basketName").val($(this).parent().parent().find("span").text());

    Достался мне проект хз кем написанный, и я решил поменять кое-где в верстке <span> на другой элемент (из чисто эстетических побуждений). В результате появился баг в js, собственно, вот причина.

    Запостил: mixalich7b, 10 Апреля 2014

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

    • какой например?
      Ответить
      • > какой например?
        Ну find() не нашел элемент... Какой тут еще может возникнуть баг? Типичный жкверокод прибитый гвоздями к верстке.
        Ответить
        • быть может, имелось в виду "какой тег?"
          Ответить
          • Ну раз из чисто эстетических побуждений - значит <blink>.
            Ответить
            • Или <label>
              Ответить
            • его кстати не удалили еще? :)
              в действительности логика автора непонятно, зачем менять span, который по умолчанию не несет в себе никаких стилей, на другой элемент?
              а так задачу можно решить примерно следующим образом
              $('span'). each(function(){ $(this).replaceWith('<blink>'+$(this).text()+'</blink>')});
              Ответить
              • > а так задачу можно решить примерно следующим образом

                Какую задачу? Задачу изменения тега в шаблоне, по которому рендерится страничка?
                Ответить
                • ну, если делать по правильному - конечно в разметке страницы менять. если по тупому - писать скрипты.
                  Ответить
                  • СПГС детектед ;)

                    Автор кода просто поменял в шаблоне один <span> на какой-нибудь <div>, т.к. это показалось ему более логичным. После чего перестал работать скрипт, который он и выложил сюда ;)
                    Ответить
                    • а, ну да :) я обычно в таких случаях делаю какой-нибудь левый класс
                      Ответить
              • У меня не было задачи поменять все span'ы на что-то другое :-)
                Проблема кода, который я выложил, в том, что он привязан к вёрстке (как уже отметили выше).
                Ответить
                • О, и я похожее нашёл:
                  this.i.elem.find("#SomeElementId").show()
                  			.find("a").bind("click", this.selectPoint.bind(this));

                  И это вместо того, чтобы в одном месте прописать onclick :/
                  Ответить
              • Я вот как раз вчера в вёрстке менял пару <span'ов на <label for="textBox" accesskey="k">Привет</label>
                Ну и, обычно, на форме, label и span делают с одинаковыми стилями по умолчанию.
                Ну а далее уже классами:
                .required {
                    color: #990000;
                    content: " *";/*На старых браузерах вылетит валидатором*/
                    font-size: 11px;
                    font-weight: bold;
                }
                <dl class="someForm">
                    <dt><label for="t" accesskey="n" class="required">Обязательно</label></dt>
                    <dd><input id="t" type="text" /></dd>
                    <dt><span>Кастом</span></span></dt>
                    <dd><div class="custmControl">...</div></dd>
                </dl>
                Ответить

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