Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2014, 21:53
Новичок на форуме
Отправить личное сообщение для xformer Посмотреть профиль Найти все сообщения от xformer
 
Регистрация: 30.11.2011
Сообщений: 6

Изменение текста при наведении
Здравствуйте, уважаемые форумчане.
С jQuery имею дело недавно, поэтому прошу помощи. Есть такой код:

<span class="cvet_tovara">Орех</span>
<br>
<div class="img_tovara_1"><img src="/img/20a.jpg" width="38" height="38" alt="Орех" title="Орех"></div>
<div class="img_tovara_2"><img src="/img/19s.jpg" width="38" height="38" alt="Ольха" title="Ольха"></div>
<div class="img_tovara_3"><img src="/img/18d.jpg" width="38" height="38" alt="Кедр" title="Кедр"></div>

Таких блоков может быть 2, 3, 4, 5... Как видим, class="img_tovara_ тут цифра меняется".
Никак не могу сделать так, чтобы при наведении на определенный div в span изменялся текст с Орех на нужный, т.е. при наведении на второй блок изменялось на Ольха, при наведении на третий блок изменялось на Кедр и т.д.

Сделать получается, только если определенное количество блоков с определенными атрибутами. Но условия таковы, что блоков может быть любое количество с любыми атрибутами.

Последний раз редактировалось xformer, 07.07.2014 в 21:57.
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2014, 23:02
Новичок на форуме
Отправить личное сообщение для xformer Посмотреть профиль Найти все сообщения от xformer
 
Регистрация: 30.11.2011
Сообщений: 6

Простите, не в тот раздел разместил тему.
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2014, 23:23
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

<span class="cvet_tovara">Орех</span>
<br>
<div class="img_tovara_1"><img src="/img/20a.jpg" width="38" height="38" alt="Орех" title="Орех"></div>
<div class="img_tovara_2"><img src="/img/19s.jpg" width="38" height="38" alt="Ольха" title="Ольха"></div>
<div class="img_tovara_3"><img src="/img/18d.jpg" width="38" height="38" alt="Кедр" title="Кедр"></div>
<script>
[].slice.call(document.querySelectorAll('[class ^= img_tovara_]')).forEach(function(node){ 
    node.onmouseenter = function() {
        document.querySelector('.cvet_tovara').innerHTML = this.querySelector('img').title;
    }
  });
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2014, 07:57
Новичок на форуме
Отправить личное сообщение для xformer Посмотреть профиль Найти все сообщения от xformer
 
Регистрация: 30.11.2011
Сообщений: 6

Спасибо огромное.
Сейчас активной остается та надпись, на рисунок которой последней наводили указатель. А как сделать, чтобы после действий, надпись снова стала исходной?
Ответить с цитированием
  #5 (permalink)  
Старый 08.07.2014, 09:53
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

BETEPAH,
больше похоже на костыль, чем на нормальное решение.
Ответить с цитированием
  #6 (permalink)  
Старый 08.07.2014, 11:23
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от xformer
Сейчас активной остается та надпись, на рисунок которой последней наводили указатель
условия топика соблюдены вроде Можно, конечно, возвращать исходную надпись. Посмотрим вариант WorM32, потом доделаем.
Ответить с цитированием
  #7 (permalink)  
Старый 08.07.2014, 11:47
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

<style>
.img_tovara {
  width: 38px; 
}
</style>
<span class="cvet_tovara">Орех</span>
<br>
<div class="img_tovara"><img src="/img/20a.jpg" width="38" height="38" alt="Орех" title="Орех"></div>
<div class="img_tovara"><img src="/img/19s.jpg" width="38" height="38" alt="Ольха" title="Ольха"></div>
<div class="img_tovara"><img src="/img/18d.jpg" width="38" height="38" alt="Кедр" title="Кедр"></div>

<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script>
(function () {
var cvetTovara = $('.cvet_tovara'),
    defaultCvet = cvetTovara.text();
$('.img_tovara')
  .on('mouseenter', function () {
    var cvet = $(this).find('img').attr('title');
    cvetTovara.text(cvet);
  })
  .on('mouseleave', function () {
    cvetTovara.text(defaultCvet); 
  });
})();
</script>
Ответить с цитированием
  #8 (permalink)  
Старый 08.07.2014, 11:59
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

WorM32,
Вы изменили верстку и добавили 100 килобайтную библиотеку. А в остальном тот же костыль
Ответить с цитированием
  #9 (permalink)  
Старый 08.07.2014, 12:19
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

Сообщение от BETEPAH Посмотреть сообщение
WorM32,
Вы изменили верстку
изменилось только имя класса, тк это чуть более правильно, чем есть.
Сообщение от BETEPAH Посмотреть сообщение
и добавили 100 килобайтную библиотеку.
ТС написал, что юзает jQuery изначально.
Сообщение от BETEPAH Посмотреть сообщение
А в остальном тот же костыль
в чем?)
Ответить с цитированием
  #10 (permalink)  
Старый 08.07.2014, 14:34
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от WorM32
изменилось только имя класса, тк это чуть более правильно, чем есть.
на основании чего Вы сделали этот вывод? Если в проекте используется определенный нейминг, наверное, на это были причины. Уж в таком случае чуть более правильным было бы добавить класс, а не заменять.
Сообщение от WorM32
ТС написал, что юзает jQuery изначально.
Мы по-разному трактуем предложение "С jQuery имею дело недавно". Если что-то можно сделать без jQ, не раздувая при этом код, лучше делать без jQ.
Сообщение от WorM32
в чем?)
парирую вопросом: в чем отличие-то? Почему там костыль, а здесь не костыль?

<span class="cvet_tovara" data-default="Орех">Орех</span>
<br>
<div class="img_tovara_1"><img src="/img/20a.jpg" width="38" height="38" alt="Орех" title="Орех"></div>
<div class="img_tovara_2"><img src="/img/19s.jpg" width="38" height="38" alt="Ольха" title="Ольха"></div>
<div class="img_tovara_3"><img src="/img/18d.jpg" width="38" height="38" alt="Кедр" title="Кедр"></div>
<script>
[].slice.call(document.querySelectorAll('[class ^= img_tovara_]')).forEach(function(node){ 
    var title = document.querySelector('.cvet_tovara');
    node.onmouseenter = function() {
        title.innerHTML = this.querySelector('img').title;
    }
    node.onmouseleave = function() {
        title.innerHTML = title.getAttribute('data-default');
    }
// это можно убрать, если не понадобится :)
    node.onclick = function() { 
        title.setAttribute('data-default', title.innerHTML = this.querySelector('img').title);
    }
  });
</script>

Последний раз редактировалось BETEPAH, 09.07.2014 в 09:11. Причина: добавил код
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение цвета заливки у SVG картинки при наведении мыши? akkond Общие вопросы Javascript 2 15.04.2014 13:04
Замена текста при наведении Sirius-jack Общие вопросы Javascript 3 04.05.2013 05:16
Картинка не изменяется при наведении. astashovaj Общие вопросы Javascript 11 12.01.2011 10:44
menu с выпадающими подменю при наведении и раздвижное при клике bugor Элементы интерфейса 3 04.10.2010 14:32
Появление текста при наведении курсора на ссылку Александра Элементы интерфейса 1 11.05.2009 00:22