June 15, 2009

Особенность событий в jQuery.

Насмотрелся всяких тут умных людей

и полез искать где бы соптимизировать в своих скриптах.
Сегодня замеряя скорость выполнения тех или иных кусков кода JS скриптов заметил такую штуку в случае добавления событий. Есть вот такой вариант №1.

$('#id').change(Obj.EventMethod);


и вариант №2

$('#id').change(function(){
console.log("CHANGE");
});


Кажется ничего особо их не отличает, если вы знакомы с jQuery. Но есть больше НО!. Каждый раз при выполнении кода из варианта №2 в очередь событий добавляется копия функции передаваемой как параметр. Соответственно в случае возникновения события "change" ("change" в приведенном случае) наша функция выполнится столько раз, сколько она была добавлена. Лично я этого незнал, но и таких случаев с многократным добавлением событий я пока что не нашел.

Так что используйте это дело аккуратно.

June 3, 2009

Интересное решение для noscript

Нашел в исходниках Google Reader интересное решение для noscript.

<noscript><style type="text/css">
div {display: none;}
#noscript {padding: 3em; font-size: 130%;}
</style>
<p id="noscript">
JavaScript must be enabled in order for you to use Reader. 
However, it seems JavaScript is either disabled or not supported by your 
browser. To use Reader, enable JavaScript by changing your browser options, 
then <a href="/reader/">try again</a>.</p>
</noscript>


Эта штука скрывает все дивы на странице, и показывает только определенный тег <p>, в котором в данном случае написано что необходимо включить поддержку JavaScript в браузере и попробовать еще раз. Уже вставил и заюзал у себя такое...

June 1, 2009

Проверка вхождения строки или числа в массив в стиле Python

В Python есть очень приятная возможность проверить вхождение объекта в список. Выглядит это примерно вот так:

if 'a' in ['a','b','c']:
    print "YES"
else:
    print "NO"


Согласитесь, просто и красиво. А вот в JavaScript нет такой штуки. И я решил написать для себя небольшое расширение объектов Number и String для JavaScript которое позволяет делать проверку похожим способом.