Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение SRC изображению через jQuery 
:(
    Опции темы
Innuendo
Дата 2.12.2007, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: нет
Всего: 6



Нужно сделать, чтоб при наведении на изображение оно "красивенько" поменялось.  У меня есть div с id='mydiv' и в него вложен <img>. При наведении надо его сделать прозрачным плавно, сменить изображение и вернуть так же плавно.
Использую такой код:
Код

$(document).ready(function(){

    $("#mydiv").mouseover( function() {
        $("#mydiv").animate({opacity:"hide"},"fast" , function() {
                            $("#mydiv > img").src('img2.gif');
                            $("#mydiv").animate({opacity:"show"},"fast");
        });
    });                        
});

Изображение плавно затихает, но не всплывает. Проблема именно в src(), так как если удаляю эту строку то изображение возвращается (без смены)

Как менять src изображениям?. И может я неправильно написал #mydiv > img? я просто первый раз работаю с jQuery


--------------------
=)
PM MAIL ICQ Jabber   Вверх
ksnk
Дата 2.12.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Код

           $("#mydiv > img").attr('src','img2.gif');

Учите матчасть... smile

Это сообщение отредактировал(а) ksnk - 2.12.2007, 21:13


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Innuendo
Дата 3.12.2007, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: нет
Всего: 6



ksnk, спс =) вроде бы где-то в мануале читал что просто src();

а вот возникла следующая проблема. У меня таких изображений много. Решил всем задать такую возможность циклом. и не работает
Код

$(document).ready(function(){
   for (var n=1; n<=9; n++) {
    $("#menu"+n+"").mouseover( function() {
        $("#menu"+n+"").animate({opacity:"hide"},"fast" , function() {
                            $("#menu"+n+"").attr('src', menuImages[n+m].src);
                            $("#menu"+n+"").animate({opacity:"show"},"fast");
        });
    });  
    $("#menu"+n+"").mouseout( function() {
        $("#menu"+n+"").animate({opacity:"hide"},"fast" , function() {
                            $("#menu"+n+"").attr('src', menuImages[n].src);
                            $("#menu"+n+"").animate({opacity:"show"},"fast");
        });
    });      
    }
});


Это сообщение отредактировал(а) Innuendo - 3.12.2007, 00:55


--------------------
=)
PM MAIL ICQ Jabber   Вверх
ksnk
Дата 3.12.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



А с какой целью вы все это пишете? imho, сейчас вы плохо понимаете что такое jquery и как оно работает.
Чтобы лучше понять это можно просмотреть и постараться понять примеры на jquery.com.

Теперь - к коду:
  • конструкция "#menu"+n+"" - выглядит странно. Зачем последняя пустая строка ?
  • конструкция 
    for (var n=1; n<=9; n++) {
        $("#menu"+n+"")... выглядит странно. У вас там только 9 меню? Больше не предполагается?

    В JQuery есть фенечка, которая мне понравилась - выбор по классу тега. Можно всем элементам меню поставить один и тот-же класс ('menuimg', к примеру) и искать по нему.
    Тогда конструкция, перебирающая ВСЕ элементы меню будет выглядеть примерно так:
      $('menuimg')...
  •  Хранить имена картинок в отдельном javаScript массиве не удобно. если меню измениться - добавятся новые пункты, ets... - будет много лишний геморой. Лучше, imho, хранить их в html вместе с самим элементом меню в какой-нибудь дополнительном атрибуте. Как нибудь так :
     <img class='menuimg' src='Untitled-1.gif' oversrc='Untitled-2.gif'>

Итого - получился вот такой код,
Код

$(document).ready(function(){
    $(".menuimg")
        .each(function(){ // сохраняем существующую картинку в еще одном атрибуте
            var x=$(this);x.attr('save', x.attr('src'));
        })
        .mouseover( function() {
            var x=$(this);
            x.animate({opacity:"hide"},"fast" , function() {
                x .attr('src', x.attr('oversrc'))
                  .animate({opacity:"show"},"fast");
            })
        })    
        .mouseout( function() {
            var x=$(this);
            x.animate({opacity:"hide"},"fast" , function() {
                x .attr('src', x.attr('save'))
                  .animate({opacity:"show"},"fast");
            })
        });      
});
 
Код

<style>
.menuimg {width:60px; height:60px; display:block;}
</style>

<img class='menuimg' src='Untitled-1.gif' oversrc='Untitled-2.gif'>
<img class='menuimg' src='Untitled-3.gif' oversrc='Untitled-4.gif'>
<img class='menuimg' src='Untitled-5.gif' oversrc='Untitled-6.gif'>

который несколько лучше вашего, но не может считаться рабочим, так как имеет забавные глюки, если очень быстро двигать мышкой  ;-)


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Innuendo
Дата 3.12.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: нет
Всего: 6



Цитата(ksnk @  3.12.2007,  11:09 Найти цитируемый пост)
конструкция "#menu"+n+"" - выглядит странно. Зачем последняя пустая строка ?

это была просто страховка. Но вообще понятно, что последние "" не нужны.

Цитата(ksnk @  3.12.2007,  11:09 Найти цитируемый пост)
В JQuery есть фенечка, которая мне понравилась - выбор по классу тега. Можно всем элементам меню поставить один и тот-же класс ('menuimg', к примеру) и искать по нему.
Тогда конструкция, перебирающая ВСЕ элементы меню будет выглядеть примерно так:

Во, я сегодня думал всё таки насчёт моего примера, и вспомнил пример с jquery.com и понял, что удобнее не делать цикл а как-то объединить эти img.

Цитата(ksnk @  3.12.2007,  11:09 Найти цитируемый пост)
 Хранить имена картинок в отдельном javаScript массиве не удобно. если меню измениться - добавятся новые пункты, ets... - будет много лишний геморой. Лучше, imho, хранить их в html вместе с самим элементом меню в какой-нибудь дополнительном атрибуте. Как нибудь так :
 <img class='menuimg' src='Untitled-1.gif' oversrc='Untitled-2.gif'>

А вот тут всё же не знаю. Ведь если так использовать то будет кэшироваться.. Я поэтому и храню изображения в объектах Image(); в массивах...


Но вообщем спасибо большое. Идею понял. Задам изоображениям один класс.


--------------------
=)
PM MAIL ICQ Jabber   Вверх
Innuendo
Дата 3.12.2007, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: нет
Всего: 6



А вот эффекты меню запоминаются. Если я быстро буду вводить по меню и уберу потом мышку, то он ещё может секунд 10 все наведенные элементы промигать. Как сделать, чтобы при отведении от таблицы (в которой хрянятся изображения) все эффекты прекратились (которые в очереди стоят). ВОзможно такое?


--------------------
=)
PM MAIL ICQ Jabber   Вверх
ksnk
Дата 3.12.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Цитата(Innuendo @  3.12.2007,  15:55 Найти цитируемый пост)
Как сделать, чтобы при отведении от таблицы (в которой хрянятся изображения) все эффекты прекратились (которые в очереди стоят). ВОзможно такое? 

Возможно. Метод называется stop
Проблема только в том, что при этом изображение замирает в недоанимированном состоянии и следующий цикл анимации начинается именно с него. то есть нужно бы восстановить после стопа "предшествующее" состояние и начинать следующий цикл анимации с него... 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Innuendo
Дата 3.12.2007, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: нет
Всего: 6



ksnk, спасибо


--------------------
=)
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.