Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.08.2011, 11:07
Аспирант
Отправить личное сообщение для mikel Посмотреть профиль Найти все сообщения от mikel
 
Регистрация: 22.11.2009
Сообщений: 30

Не удается сделать undelegate
Подскажите,плз...
Вот есть набор фоток, у первой непрозрачность 1, у остальных по 0.6.
На все, кроме первой, вешаюся события mouseout и mouseover, меняющие непрозрачность с 0.6 до 1 и обратно. Пытаюсь по клику на фотке отвязать mouseout от кликнутой фотки, чтобы непрозрачность оставалась 1. Но почему-то не срабатывает.

$(document).ready(function () {
            function imgOver() {
                $(this).animate({ opacity: '1.0' }, 100);
            }

            function imgOut() {
                $(this).animate({ opacity: '0.6' }, 100);
            }

            if ($('.detail-foto-list img') != null) {
                var i = 0;
                $('.detail-foto-list img').each(function () { //Начало цикла 1
                    $(this).css('cursor', 'pointer');

                    if (i > 0) {
                        $(this).animate({ opacity: '0.6' }, 1);
                        $("body").delegate("#img" + (i + 1), "mouseover", imgOver);
                        $("body").delegate("#img" + (i + 1), "mouseout", imgOut);

                        $("body").delegate("#img" + (i + 1), "click", function () {
                            $("body").undelegate("#img" + (i + 1), "mouseout", imgOut);
                        });
                    }
                    i++;
                }); //Конец цикла 1
            }
        });

Последний раз редактировалось mikel, 21.08.2011 в 11:14.
Ответить с цитированием
  #2 (permalink)  
Старый 21.08.2011, 15:05
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Лучше сделать через css и не валять дурака. Это глупо писать для такой мелочи столько лишнего кода.
Ответить с цитированием
  #3 (permalink)  
Старый 21.08.2011, 21:00
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

1) используйте CSS3 Transition, браузеры которые не поддерживают это свойство, будут просто менять прозрачность без анимации
2) привидете пример когда функция jQuery возращает null
Ответить с цитированием
  #4 (permalink)  
Старый 21.08.2011, 23:11
Аспирант
Отправить личное сообщение для mikel Посмотреть профиль Найти все сообщения от mikel
 
Регистрация: 22.11.2009
Сообщений: 30

ваый,
А можно поподробнее. Ведь в конечном счете, CSS все равно придется менять либо чистым js, либо jquery, и кода будет столько же. Например, создать класс типа
.transp
{
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50); /* IE 5.5+*/
-moz-opacity: 0.5; /* Mozilla 1.6 и ниже */
-khtml-opacity: 0.5; /* Konqueror 3.1, Safari 1.1 */
opacity: 0.5; /* CSS3 - Mozilla 1.7b +, Firefox 0.9 +, Safari 1.2+, Opera 9 */
}

и ему присваивать при mouseout?

nikita.mmf,
Так функция нигде null и не возвращает, тут проблема, как отвязать от изображения события mouseout и mouseover по клику на нем.

То есть, почему не срабатывает вот этот кусок
$("body").delegate("#img" + (i + 1), "click", function () {
	                            $("body").undelegate("#img" + (i + 1), "mouseout", imgOut);
	                        });

Последний раз редактировалось mikel, 21.08.2011 в 23:14.
Ответить с цитированием
  #5 (permalink)  
Старый 21.08.2011, 23:18
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от mikel
Ведь в конечном счете, CSS все равно придется менять либо чистым js, либо jquery
Не обязательно. Для этого можно использовать псевдокласс :hover.
Ответить с цитированием
  #6 (permalink)  
Старый 21.08.2011, 23:33
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>

<style>
.image {width: 50px; height: 50px; background-color: #333; margin: 0 2px; display: inline-block;}

.image {opacity: 0.6;}
.image:hover, .image.active {opacity: 1;}
</style>

<span class="image"></span>
<span class="image"></span>

<script>
$('.image').click(function() {
    $(this).toggleClass('active');
});
</script>

Последний раз редактировалось ваый, 21.08.2011 в 23:44.
Ответить с цитированием
  #7 (permalink)  
Старый 22.08.2011, 12:15
Аспирант
Отправить личное сообщение для mikel Посмотреть профиль Найти все сообщения от mikel
 
Регистрация: 22.11.2009
Сообщений: 30

Спасибо за советы. В итоге, так и сделал, подсветку через hover, а обработку клика через toggleClass и removeClass.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как лучше сделать виджет? comentator Элементы интерфейса 0 25.03.2011 08:44
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
Сделать видимым select... Anneta Элементы интерфейса 7 12.01.2011 21:21
Нужно сделать плавное появление текстового поля как на сайте vkontakte.ru paratrooper1981 Элементы интерфейса 1 23.11.2009 18:24
Помогите сделать такое меню(( Lilith Я не знаю javascript 2 02.06.2009 02:31