289

Пятничные сниппеты. jQuery

23 мая 2008, 3:47JavaScriptрейтинг +19-

Пятничные сниппеты jQueryНачиная с сегодняшнего дня, каждую пятницу мы будем выкладывать некоторое количество сниппетов на разные темы.

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


 

сниппеты jquery, jquery snippets, javascript, разработка сайтов, оптимизация, раскрутка, дизайн сайта
Здесь могла бы быть Ваша реклама
показать рекламу :)убрать рекламу

Поехали. Сегодняшние сниппеты касаются jQuery.

1. Плавное изменение цвета

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

 $(document).ready( function() {
$(".mainMenu a, .articleTitle a").mouseover( function() {
$(this).animate({color: "#cc4e4e"}, {queue:false, duration:250 });
}).mouseout( function() {
$(this).animate({color: "#0e8db7"}, { queue:false, duration:350});
});

});

 

2. Выбрать все чекбоксы конкретного объекта

 // context = id элемента, внутри которого чекбоксы
function checkall(context){
$("#"+context).find("input[@type$='checkbox']").each(function(){
this.checked = checked;
});
}

 

3. Количество выбранных элементов


$('element').size();

 

4. Состояние радиобаттона



var var_name = $("input[@name='radio_name']:checked").val();

 

5. Переключатель класса

 $.fn.swapClass = function(c1, c2){
return this.each(function(){
var t = $(this);
(!t.is('.'+c1)) ?
t.addClass(c1).removeClass(c2) : t.addClass(c2).removeClass(c1);
});
}

 

Или короче (спасибо Sam'у):

$('#element').toggleClass('selected');

 

6. Перехват изменения размера окна

 function doSomething() {
alert("Я закончил изменение размера!");
};

var resizeTimer = null;
$(window).bind('resize', function() {
if (resizeTimer) clearTimeout(resizeTimer);
resizeTimer = setTimeout(doSomething, 100);
});

 

Если у вас, дорогие читатели, есть свои заготовки, которыми вам не жалко поделиться, кидайте к нам на почту pisem@vremenno.net. Темы сниппетов ограничиваются клиентской частью веб-приложений, то есть js, css, HTML.

Memori.rumister-wong.combobrdobr.rumoemesto.rudel.icio.uszakladki.yandex.rugoogle.com/bookmarks/

Комментарии

4. Переключатель класса $('#element').toggleClass('selected');
Sam, 23 мая 2008, 14:25
классно, ребята. Спасибо. Особенно круто было про плагин цветов для jQuery. Напишите еще как-нибудь.
desp, 30 мая 2008, 1:29
все действительно КРУТО, но хотелось бы еще:) обещали же каждую пятницу выкладавать:)
sarm, 5 июня 2008, 15:29
Что обещали, то выполнено ;-). Опубликовано ровно через неделю после этой темы.
данек2, 5 июня 2008, 16:59
Я не увидел.. это mootools?
Martin, 13 июня 2008, 0:27
нет, это jQuery
Жека, 13 июня 2008, 0:58
А как изменять background-color в ссылках (как на автокадабре ) . Я хочу что при наведении на ссылку плавно менялся не только цвет текста , но и бэк-граунд ссылки ?
Димон, 16 июля 2008, 22:47
Так же, как в первом примере, только "color" замените на "background-color". Или можно посмотреть в сорсе автокадабры )
Grin, 16 июля 2008, 23:44
Я так и делал :-) (менял на "background-color" ) , но из этого ничего не вышло . Поэтому и прошу совета и знающих людей .
Димон, 17 июля 2008, 0:19
попробуйте просто "background" - или посмотрите как сделано на автокадабре
Grin, 17 июля 2008, 11:54
Димон, менять надо backgroundColor. Пример здесь
Жека, 17 июля 2008, 16:42
Спасибо Жека за ссылочку , но я там уже бывал ;-) и у меня всё равно не получалось . Оказывается , чтобы решить проблему необходимо в свойстве a:link добавить {background-color:#ваш_цвет фона} . С этой строчкой у меня всё заработало ;-)
Димон, 18 июля 2008, 1:44
Ну так, ёманый мамай, конечно должно было быть какое-то начальное значение.
Жека, 18 июля 2008, 2:52
1. Для того чтобы не писать mouseover-mouseout в jQuery предусмотрен метод hover, который принимает сразу 2 функции:
$('.mainMenu a, .articleTitle a').hover(function() {
	$(this).animate({color: '#cc4e4e'}, {queue: false, duration: 250});
},
function() {
	$(this).animate({color: '#0e8db7'}, {queue: false, duration: 350});
});
2. Чтобы выбрать все чекбоксы конкретного объекта достаточно написать: $('#form-id input:checkbox').attr({checked: 'checked'}); Многие методы jQuery могут работать как с единичным объектом, так и с целым массивом объектов. Про переключатель класса уже поправили ;-)
Octane, 20 июля 2008, 21:21
Octane, вы автор js-core?
Zena, 20 июля 2008, 22:40
Да, я. Пытаюсь написать что-то похожее на jQuery, но работающее в старых браузерах (IE5.5, Opera8)
Octane, 20 июля 2008, 22:44
Круто.
Zena, 20 июля 2008, 23:01
Удачи Вам и веб плюс плюсу
Жека, 20 июля 2008, 23:03
Спасибо большое :-) Вам тоже побольше читателей) Кстати, первоначально обратил внимание на этот блог из-за дизайна, весьма удачно получился.
Octane, 20 июля 2008, 23:13