Создать ответ 
Скрипт спойлера с изменяющимися изображениями в заголовке спойлера
Автор Сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #1
Скрипт спойлера с изменяющимися изображениями в заголовке спойлера
К теме Обновленный скрипт спойлера с плавным открытием и скрытием содержимого поступил комментарий от Алексея:

(07.10.2014 21:05:15)Алексей писал(а):Добрый вечер!
Огромное спасибо за отличный спойлер.
Есть вопрос...
Выпадает при нажатии на картинку. Вопрос:
Как сделать чтобы при наведении курсора на картинку она менялась (№2), при открытом спойлере опять менялась (№3), при закрытии становилась исходной (№1).

Использую код:
$(document).ready(function(){
$(document).click(function(){
$("div[class^='spoiler_body']").hide('normal');
});
$('.spoiler_style').click(function(){
$(this).next('.spoiler_body').toggle('normal');
return false;
});
});

HTML:
<div class="spoiler_style">
<img src="images/spoiler2.png" alt="subscribe" width="300" height="55" />
</div>
<div class="spoiler_body">
Здесь содержится все то, что должен скрывать спойлер.<br>
</div>

Спасибо!

Данный комментарий в связи со своими большими размерами и узкой спецификой вопроса (не всем это может понадобиться) был перенесен на форум. Так же ответ на данный комментарий будет не маленьким.
08.10.2014 12:36:27
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #2
RE: Скрипт спойлера с изменяющимися изображениями в заголовке спойлера
Если я правильно Вас понял, то изображение должно иметь три состояния: при открытом спойлере, при закрытом спойлере и под курсором мыши.

В таком случае держите код, который будет корректно работать только в том случае, если изначально все спойлеры закрыты:
Код:
<style type="text/css">
    .spoiler_body { display:none; }
</style>

<div class="spoiler_style">
<img src="image/img_1.png" alt="subscribe" width="300" height="55" />
</div>
<div class="spoiler_body">
Здесь содержится все то, что должен скрывать спойлер.<br>
</div>

<div class="spoiler_style">
<img src="image/img_1.png" alt="subscribe" width="300" height="55" />
</div>
<div class="spoiler_body">
Здесь содержится все то, что должен скрывать спойлер.<br>
</div>

<div class="spoiler_style">
<img src="image/img_1.png" alt="subscribe" width="300" height="55" />
</div>
<div class="spoiler_body">
Здесь содержится все то, что должен скрывать спойлер.<br>
</div>


<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){
$('.spoiler_style').data('state', 0);
var time=300;
var img_url=["image/img_1.png","image/img_3.png","image/img_2.png"];

$(document).click(function(){
    $('.spoiler_body').hide('normal');
    $('.spoiler_style').data('state', 0);
    $('.spoiler_style img').fadeOut(time, function() { $(this).attr('src', img_url[0]).fadeIn(time); });
});

$('.spoiler_style').click(function(){
    if ($(this).data('state')==0) $(this).data('state', 1);
    else $(this).data('state', 0);
    $(this).children('img').attr('src', img_url[2]);
    $(this).next('.spoiler_body').toggle('normal');
    return false;
});

$('.spoiler_style img').hover(
function(){
    $(this).fadeOut(time, function() { $(this).attr('src', img_url[2]).fadeIn(time); });
},
function(){
    if ($(this).parent().data('state')==0) {
        $(this).fadeOut(time, function() { $(this).attr('src', img_url[0]).fadeIn(time); });
    }
    else {
        $(this).fadeOut(time, function() { $(this).attr('src', img_url[1]).fadeIn(time); });
    }
});

});
</script>

P.S. Пришлось конечно помучаться, но вроде работает как надо и с плавной сменой изображений.
08.10.2014 12:41:56
Найти все сообщения Цитировать это сообщение
aleks Не на форуме
Ефрейтор
*

Сообщений: 10
У нас с: Oct 2014
Сообщение: #3
RE: Скрипт спойлера с изменяющимися изображениями в заголовке спойлера
Добрый вечер.
Спасибо огромное! То что нужно!

Единственная проблема (( отказали все ссылки на сайте.
эффект "hover" есть, а перехода по ссылке нет...
Подскажите пожалуйста как поправить.

Спасибо.
08.10.2014 19:50:03
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #4
RE: Скрипт спойлера с изменяющимися изображениями в заголовке спойлера
Это я пока тестировал, немного перестарался. Blush

Удалите строчку return false; из функции $(document).click(function(){...});

Вверху код тоже поправил.
08.10.2014 20:35:39
Найти все сообщения Цитировать это сообщение
aleks Не на форуме
Ефрейтор
*

Сообщений: 10
У нас с: Oct 2014
Сообщение: #5
RE: Скрипт спойлера с изменяющимися изображениями в заголовке спойлера
Большое спасибо!
Все работает и не конфликтует ни с одним из скриптов!
Отличная работа!Happy
08.10.2014 21:36:52
Найти все сообщения Цитировать это сообщение
aleks Не на форуме
Ефрейтор
*

Сообщений: 10
У нас с: Oct 2014
Сообщение: #6
RE: Скрипт спойлера с изменяющимися изображениями в заголовке спойлера
Добрый день!
По ходу дела возникла еще одна проблема.
Скрипт закрывает спойлер при нажатии в любое место страницы. Как исключить ТОЛЬКО область внутри открытого спойлера, т.к. внутри есть картинки при нажатии на которые спойлер должен оставаться открытым!

Еще раз спасибо!
10.10.2014 08:57:39
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #7
RE: Скрипт спойлера с изменяющимися изображениями в заголовке спойлера
Замените функцию:
Код:
$(document).click(function(){
     $('.spoiler_body').hide('normal');
     $('.spoiler_style').data('state', 0);
     $('.spoiler_style img').fadeOut(time, function() { $(this).attr('src', img_url[0]).fadeIn(time); });
});

На новую:
Код:
$(document).click(function(e){
    if (!$(e.target).closest('.spoiler_body').length) {
        $('.spoiler_body').hide('normal');
        $('.spoiler_style').data('state', 0);
        $('.spoiler_style img').fadeOut(time, function() { $(this).attr('src', img_url[0]).fadeIn(time); });
    }
});
10.10.2014 12:18:07
Найти все сообщения Цитировать это сообщение
aleks Не на форуме
Ефрейтор
*

Сообщений: 10
У нас с: Oct 2014
Сообщение: #8
RE: Скрипт спойлера с изменяющимися изображениями в заголовке спойлера
И ещё раз спасибо за оперативную помощь!
10.10.2014 14:21:41
Найти все сообщения Цитировать это сообщение
aleks Не на форуме
Ефрейтор
*

Сообщений: 10
У нас с: Oct 2014
Сообщение: #9
RE: Скрипт спойлера с изменяющимися изображениями в заголовке спойлера
Добрый день!

Еще один вопрос...
Скажите пожалуйста, чтобы добавить второй спойлер (картинка на которую будет клик, отличается от первого спойлера) на ту же страницу, необходимо подключать новый скрипт или достаточно внести дополнение в имеющийся?

Заранее спасибо.
27.10.2014 06:20:19
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #10
RE: Скрипт спойлера с изменяющимися изображениями в заголовке спойлера
Думаю, тут малыми изменениями не обойдется, легче повторить скрипт, изменив адреса изображений и имена стилей для второго спойлера. Ничего более оригинального предложить не могу...
27.10.2014 22:21:49
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru