Новичок в jQuery – основы кодирования / производительность


Пустые текстовые поля, класс="Лок" дисплей "(города, государства \ страны)" , используя курсив и серебра. Конечно, текстовые поля, которые имеют данные отображаются по умолчанию страницы.

Я заметил, цепочки и кэширования могут быть использованы. Есть вопросы наследства, поэтому я не заморачиваюсь с использованием .добавление вместо целевую аудиторию .УСБ.

    $(function () {
        var loc = $('.loc');

        function desc() {
            var tar = $(this);
            if (tar.val().length == 0) {
                tar.val("(City, State \\ Country)").css({
                    "color": "silver",
                    "fontStyle": "italic"
                });
            };
        }

        function data() {
            var tar = $(this);
            if (tar.val() == "(City, State \\ Country)") {
                tar.val("").css({
                    "color": "black",
                    "fontStyle": "normal"
                });
            };
        }

        loc.each(desc).blur(desc).click(data);
    });

Как далеко от базы я на понимание правильного форматирования в jQuery?



240
2
задан 19 октября 2011 в 04:10 Источник Поделиться
Комментарии
3 ответа

Пару вещей:


  • В любое время вы сравните с 0 (ноль) вы хотите, чтобы убедиться, что вы используете в точности равна оператора ===, а не ==. Что бы сделать код еще более выразительным делает что-то вроде если(тар.функция val().длина){} . Таким образом, ваш код говорит "если значение деготь является пустым, то этого"

  • Я бы также принести последнюю строку в верхней части вашей функции и поместить его под заявлением ВАР Лок. Функции будет развеваться над всем, что так они будут там, даже если они определены после звонков.

  • это мог бы быть переписаны в одну функцию с простым, если/другое заявление, проверив значение поля.

  • Вместо использования каждого вызова данных функций ,предполагая, что вы не имеете любые другие мероприятия, связанные с размытия событие вы могли бы назвать размытия явно не в конце цепи, чтобы вызвать эту функциональность ...кнопку(данные).размытие().

  • Посмотрел бы я на ANeves предложения.

3
ответ дан 20 октября 2011 в 03:10 Источник Поделиться

Вы должны использовать вводас заполнителем атрибут вместо того, чтобы реализовать функциональность самостоятельно.

Я предлагаю вам прочитать эту статью на StackOverflow: https://stackoverflow.com/questions/7557801/can-i-use-jquery-to-blank-textarea-fields-or-ajax-like-input-boxes

Если вы хотите пройти лишнюю милю, чтобы убедиться, что даже старые браузеры будут иметь функциональность, выбранного ответа в этой статье объясняется, как.

2
ответ дан 20 октября 2011 в 01:10 Источник Поделиться

Кроме того, ответы bittersweetryan и ANeves, я хотел бы предложить:

1) не установить стили напрямую, но вместо того, чтобы использовать класс, так что стили не жестко в скрипт - особенно важно, если шрифт в стиле не черным и не курсивом:

function desc() {
var tar = $(this);
if (tar.val().length == 0) {
tar.val("(City, State \\ Country)").addClass("placeholder");
};
}

function data() {
var tar = $(this);
if (tar.val() == "(City, State \\ Country)") {
tar.val("").removeClass("placeholder");
};
}

с

.loc.placeholder {
color: silver;
font-style: italic;
}

2) Вы должны вызвать данные на фокус , вместо того, чтобы нажать, потому что поле ввода может получить фокус на другие методы, кроме нажатия.

3) Наконец, вы должны переместить строковые константы в коде и сделать их параметров, так что код является более гибким, например, если вы хотите использовать его с другими материалами.

1
ответ дан 20 октября 2011 в 02:10 Источник Поделиться