
10.04.2012, 10:52
|
|
Аспирант
|
|
Регистрация: 08.02.2012
Сообщений: 34
|
|
|
Как узнать папку, с которой загрузилась картинка?
Привет всем!
не знаю, отвечаете ли вы по Jquery, ведь сайт по javascript, но все же...
есть простой скрипт:
$('a.menu').hover(
function() { //при наведении курсора:
id = $(this).attr('id');
num = id.replace(/menu(\d+)/gi, '$1'); //выделяем порядковый номер меню
$('#img'+num).attr('src', 'img/menu/'+num+'.png');
},
function() { //при уходе курсора с области реагирования hover:
id = $(this).attr('id');
num = id.replace(/menu(\d+)/gi, '$1');
if ($(this).hasClass('site_active')) return false; //если объекту соответствует класс 'site_active', обратно картинку не меняем.
$('#img'+num).attr('src', 'img/menu/menu'+num+'.png'); //возвращаем предыдущую картинку
}
);
суть:
у каждого объекта меню есть пара картинок:
например: menu1.png - по дефолту и
1.png - для события hover
тоже самое планирую сделать для других ссылок, вне меню.
Вопрос:
как автоматически вычислять вот эту вот часть: " 'img/menu/ " ?
то есть, мне надо, шобэ скрипт мог сам узнать из какой папки загрузилась картинка?
Смысл:
как многие наверное знают Осел 6 не отрабатывает события OnMouseOver и OnMouseOut для тега <img>. скрипт обходит эту ошибку, но на сайте достаточно картинок, которые меняются по наведению, расположены в разных папках (в зависимости от принадлежности), и имеют соответственно разные классы для ссылок, не только class='menu' (а.menu).
хоцца:
менять все картинки ОДНИМ скриптом.
заранее спасибо!
|
|

10.04.2012, 12:45
|
|
Лаборант :-)
|
|
Регистрация: 08.11.2011
Сообщений: 806
|
|
|
Сообщение от Le-mark43
|
|
не знаю, отвечаете ли вы по Jquery, ведь сайт по javascript, но все же...
|
jquery уже не javascript ?
|
Сообщение от Le-mark43
|
|
как автоматически вычислять вот эту вот часть: " 'img/menu/ " ?
|
сделайте $('#img'+num).attr('src'); - получите адрес картинки
|
|

10.04.2012, 14:04
|
|
Аспирант
|
|
Регистрация: 09.04.2012
Сообщений: 65
|
|
|
Цитата:
|
|
сделайте $('#img'+num).attr('src'); - получите адрес картинки
|
А потом делай split по символу '/' и выделяй папки)
|
|

10.04.2012, 14:05
|
|
Аспирант
|
|
Регистрация: 09.04.2012
Сообщений: 65
|
|
|
Чуть не забыл - последний элемент в полученном массиве будет названием изображения (с расширением).
|
|

10.04.2012, 15:38
|
|
Аспирант
|
|
Регистрация: 08.02.2012
Сообщений: 34
|
|
|
Народ, спасибо!
блин, так все просто....
|
|

10.04.2012, 21:35
|
|
Аспирант
|
|
Регистрация: 08.02.2012
Сообщений: 34
|
|
|
ребят, вообщем наваял я нечто вот такое:
$('img[id]').hover(function(){ //ну или $('img[class]')
src=$(this).attr('src');
srcArray=src.split('/');
nameArray=srcArray[srcArray.length-1].split('.');
name=nameArray[0];
type=nameArray[1];
dir='';
for (i = 0; i < srcArray.length-1; i++){
dir = dir+srcArray[i]+'/';
}
$(this).attr('src', dir+name+'_hover.'+type);
}, function() {
src=$(this).attr('src');
srcArray=src.split('/');
nameArray=srcArray[srcArray.length-1].split('.');
name=nameArray[0];
type=nameArray[1];
dir='';
for (i = 0; i < srcArray.length-1; i++){
dir = dir+srcArray[i]+'/';
}
name = name.replace(/_hover/gi, '');
$(this).attr('src', dir+name+'.'+type);
}
);
обязательная пара картинок:
дефаулт: картинка.тип (ну там jpg,gif пох как)
hover: картинка_hover.тип
вроде все норм, но есть ощущение, что процедуру можно как то проще сделать...
может есть идеи?
Последний раз редактировалось Le-mark43, 10.04.2012 в 21:39.
|
|

10.04.2012, 22:37
|
|
Аспирант
|
|
Регистрация: 09.04.2012
Сообщений: 65
|
|
|
Если есть ощущение, то должны быть и идеи)
|
|

11.04.2012, 09:38
|
|
Аспирант
|
|
Регистрация: 09.04.2012
Сообщений: 65
|
|
|
В плане оптимизации я не особо силен, но тут умных людей много, наверняка помогут)
|
|

11.04.2012, 10:38
|
|
Лаборант :-)
|
|
Регистрация: 08.11.2011
Сообщений: 806
|
|
|
Le-mark43,
как-то у вас сложно получается
если я правильно понял то у вас src примерно такая строка 'img/menu/picture.gif'
а при наведении мыши 'img/menu/picture_hover.gif'
может быть просто при наведении получаем src картинки
и делаем замену src.replace('.', '_hover.')
а при уходе мыши
получаем src и делаем замену src.replace('_hover.', '.')
??
|
|

14.04.2012, 22:18
|
|
Аспирант
|
|
Регистрация: 08.02.2012
Сообщений: 34
|
|
|
)))))))))))))
серьезно, так значительно проще!!!
ну чо... будем учится мыслить попростецки!
Спасибо!
кстати, при таком варианте точку в имя файла уже не вставишь, ну будем надеяться, что никто картинку с таким именем не подсунет...
|
|
|
|