03.04.2009, 19:32
|
Новичок на форуме
|
|
Регистрация: 03.04.2009
Сообщений: 4
|
|
Оптимизация Js
Всем привет.
Пытаюсь объединить одинаковые js-функции, отличающиеся только классами, но пока ничего не выходит.
Может кто подскажет, поставит на путь истинный
$(function() {
$(".scrollingHotSpotLeft").fadeTo("fast", .7);
$(".scrollingHotSpotLeft").hover(function(){
$(this).fadeTo("normal", 1);
},function(){
$(this).fadeTo("fast", .7);
});
});
$(function() {
$(".scrollingHotSpotRight").fadeTo("fast", .7);
$(".scrollingHotSpotRight").hover(function(){
$(this).fadeTo("normal", 1);
},function(){
$(this).fadeTo("fast", .7);
});
});
Последний раз редактировалось Garovsky, 03.04.2009 в 19:36.
|
|
03.04.2009, 20:26
|
Интересующийся
|
|
Регистрация: 19.03.2009
Сообщений: 11
|
|
а разве не сказывается на скорости постоянное обращение к DOM, я сам еще новичок, но кажется можно сделать что то типа:
$(function() {
var fadeThis=$(this);
var spotLeft=$(".scrollingHotSpotLeft");
var spotRight=$(".scrollingHotSpotRight");
spotLeft.fadeTo("fast", .7);
spotLeft.fadeTo("fast", .7);
spotLeft.hover(
function(){fadeThis.fadeTo("normal", 1);}
function(){fadeThis.fadeTo("fast", .7);}
);
spotRight.hover(
function(){fadeThis.fadeTo("normal", 1);}
function(){fadeThis.fadeTo("fast", .7);}
);
});
|
|
03.04.2009, 20:31
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Garovsky, создайте одну функцию, которая в качестве параметра будет принимать имя класса, и оперируйте хоть с сотней классов.
|
|
03.04.2009, 20:50
|
Новичок на форуме
|
|
Регистрация: 03.04.2009
Сообщений: 4
|
|
Сообщение от ast-ross
|
но кажется можно сделать что то типа:
|
реально ли сделать еще меньше кода? через запятую перечислить например
$(function() {
$(".scrollingHotSpotLeft, .scrollingHotSpotRight").fadeTo("fast", .7);
$("$").hover(function(){
$(this).fadeTo("normal", 1);
},function(){
$(this).fadeTo("fast", .7);
});
});
Сообщение от Dmitry A. Soshnikov
|
создайте одну функцию, которая в качестве параметра будет принимать имя класса
|
думал об этом, но в таком случае мне придется добавить для пятнадцати < li > пятнадцать одинаковых классов, а это не очень хорошо.
$(function() {
$("#nav li a").fadeTo("fast", 1);
$("#nav li a").hover(function(){
$(this).fadeTo("fast", .7);
},function(){
$(this).fadeTo("fast", 1);
});
});
Не теряю надежды найти более компактное решение и жду новых комментариев
|
|
03.04.2009, 21:58
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
расскажи, что у тебя за список, и что ты с ним сделать хочешь?
|
|
03.04.2009, 23:54
|
Новичок на форуме
|
|
Регистрация: 03.04.2009
Сообщений: 4
|
|
навигация (расположена на темном фоне), каждый пункт при наведении плавно затемняется.
|
|
05.04.2009, 00:51
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
для этого нужны 2 обработчика (mouseover, mouseout)
если же у тебя есть не одно меню, выполненное в разном стиле, то тебе уже сказали
Цитата:
|
Garovsky, создайте одну функцию, которая в качестве параметра будет принимать имя класса, и оперируйте хоть с сотней классов
|
***
хотя это даже не надо, ты ж говоришь у тебя при наведении только fadeIn/fadeOut
|
|
05.04.2009, 17:13
|
Новичок на форуме
|
|
Регистрация: 03.04.2009
Сообщений: 4
|
|
у меня несколько разных классов с одинаковым fadeIn/Out эффектом.
|
|
06.04.2009, 11:25
|
Профессор
|
|
Регистрация: 18.04.2008
Сообщений: 152
|
|
Garovsky, сделайте класс, который будет отчечать только за fadeIn/fadeOut, и добавьте его всем элементам, которые должны демонстрировать такое поведение.
|
|
|
|