Расскажу несколько фактов о jQuery, которые как мне видится, не очень понимают “отечественные программеры”
- при “навешивании” обработчика какого-либо event-а к (например $(‘#element’).click(handler); ) он НЕ заменяет предыдущий обработчик (если таковой имелся), т.е. код:
$('#element').click(function(){ alert('hello');}) $('#element').click(function(){ alert('world'); })
Выведет оба alert-а, а не только второй как думается некоторым.
- Непосредственно из первого вытекает следующий факт – конструкций $(document).ready(blablabla); в коде может быть “бесчисленное” количество раз – все обработчики вызовутся в порядке их добавления.
- Система событий в jQuery позволяет не ограничиваться теми событиями, которые есть в документации – можно создавать события самостоятельно:
$('button').click(function(){ jQuery.event.trigger("buttonClicked");}); $('div').bind('buttonClicked',function(){ $(this).hide();}); $('span').bind('buttonClicked',function(){ $(this).show();});
Подобная техника позволяет существенно упростить код и сделать его “читабельнее”.
- Анимационные эффекты в jQuery асинхронны и нередко возникает вопрос – как одну функцию выполнить строго после завершения первой. Все core-функции jQuery связанные с эффектами в качестве последнего параметра принимают callback – функцию, которая вызовется по завершению текущего эффекта:
$('element-1').fadeOut(3000,function(){ $('element-2').fadeIn(1500,function() { alert('done second effect'); }); });
- К ЛЮБОМУ html-элементу можно добавить ЛЮБОЙ атрибут (). По этим “самодельным” атрибутам элементы можно найти с помощью селекторов jQuery:
var elements_by_attr = $('[@myownattr]'); var elements_by_attr_with_value = $('[@myownattr="somevalue"]'); var spans_by_attr = $('span[@myownattr]');
Очень полезное “явление” при создании своих собственных элементов управления (и не только).
Ну и напоследок подкину найденную статейку “jQuery for JavaScript programmers”, прочитать которую стоит тем, кто только начинает осваивать прелести jQuery . Материал изложен на английском.
jQuery.facts
>К ЛЮБОМУ html-элементу можно добавить ЛЮБОЙ аттрибут
Добавить можно (наверное), но код будет невалидным.
Тут либо шашечки, либо ехать. И я вовсе не призываю клепать эти самые аттрибуты направо и налево – это лишь факт, который можно использовать во благо. Чтобы читатель увидев код навроде <div control=”drop-down-menu”></div> понимал что это не заклятие высшей магии.
Код будет валидным в валидаторе, он JavaScript не исполняет 🙂 ему все равно каких атрибутов вы там понавешаете.
Именно, один из простых официальных плагинов, что metadata зовётся, написанный самим автором jQuery (если кто не знает — ejohn.org) как раз использует свой собственный атрибут metaDone. В это ничего такого преступного нету :).