Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > Эмуляция наведения на ссылку


Автор: Jazzzz 5.4.2012, 13:59
Вопрос такой... Имеется два столбца. В обоих столбиком находятся ссылки. Мне нужно, чтобы при наведении на ссылку из левого столбца эмулировалось наведение на некоторые ссылки (!) в правом столбце (у ссылок в правом столбце оформлен красивый css стиль). Как это можно реализовать?

Автор: ksnk 5.4.2012, 15:57
на javascript.
К примеру "наведение" будет отображаться классом selected

Разметка - что-то типа
Код

<div id="First_cells"><a id="x1" href="#">...</a><a id="x2" href="#">...</a> ...</div>

<div id="Second_cells"><a class="x1 x2" href="#">...</a><a class="x2" href="#">...</a> ...</div>

То есть, при выборе ссылки с ID=XXX будут отмечены все ссылки второго столбца с классом XXX.

Код

$(function(){
  $('#First_cells a').hover(function(){
     var _id=this.id;
     if(!_id) return;
     $('#Second_cells a.selected').not('.'+_id).removeClass('selected');
     $('#Second_cells a.'+_id).addClass('selected');
  },function(){
     $('#Second_cells a.selected').removeClass('selected');
  })
})

Автор: Aliance 6.4.2012, 09:42
ksnk, в 4 строчке, похоже, все же используется не та переменная.

Вопрос автору: а зачем такое могло понадобится?

Автор: Jazzzz 6.4.2012, 09:44
Большое спасибо за ответ, но что-то не получается... 
Вот мой код. Не могли бы вы раскидать все это по коду...

Код

<table border="0"> 
    <tbody> 
        <tr> 
            <td style="width: 450px; height: 300px;" align="left" valign="top"> 
                <p>ГОСУДАРСТВЕННЫЕ И МУНИЦИПАЛЬНЫЕ ОРГАНИЗАЦИИ</p> 
                <a href="#"> - Рога и копыта</a> <br /> 
                 - Копыта и рога<br /> 
                <p>МЕЖДУНАРОДНЫЕ ОРГАНИЗАЦИИ</p> 
                - Рога и копыта <br /> - Копыта и рога<br /> 
                <p>ПРОМЫШЛЕННЫЕ ПРЕДПРИЯТИЯ</p> 
                - Рога и копыта <br /> - Копыта и рога<br /> 
                <p>НЕКОММЕРЧЕСКИЕ И ОБЩЕСТВЕННЫЕ ОРГАНИЗАЦИИ</p> 
                - Рога и копыта <br /> - Копыта и рога<br /> 
                <p>ТОРГОВЫЕ ПРЕДПРИЯТИЯ</p> 
                - Рога и копыта <br /> - Копыта и рога<br /> 
                <p>ПРЕДПРИЯТИЯ СФЕРЫ УСЛУГ</p> 
                - Рога и копыта <br /> - Копыта и рога<br /> <br /><br /></td> 
            <td style="width: 5px; height: 300px;" align="left" valign="top" bgcolor="#cccccc"> 
                <p>&nbsp;</p> 
            </td> 
            <td align="right" valign="top" style="width: 450px;"> 
                <div class="groups_main"> 
                    <div class="groupItem last"> 
                        <ul> 
                            <li><a href="#">АБОНЕНТСКОЕ ОБСЛУЖИВАНИЕ</a></li> 
                            <li><a href="#">PR-КАМПАНИИ</a></li> 
                            <li><a href="#">РЕКЛАМНЫЕ КАМПАНИИ</a></li> 
                            <li><a href="#">СВЯЗИ СО СМИ</a></li> 
                            <li><a href="#">КОПИРАЙТ</a></li> 
                            <li><a href="#">МЕРОПРИЯТИЯ</a></li> 
                            <li><a href="#">ДИЗАЙН-СТУДИЯ</a></li> 
                            <li><a href="#">ОПЕРАТИВНАЯ ПОЛИГРАФИЯ</a></li> 
                            <li><a href="#">РАЗРАБОТКА САЙТОВ</a></li> 
                            <li><a href="#">СУВЕНИРНАЯ ПРОДУКЦИЯ</a></li> 
                        </ul> 
                    </div> 
                </div> 
            </td> 
        </tr> 
    </tbody> 
</table> 


Добавлено через 6 минут и 5 секунд
Цитата(Aliance @  6.4.2012,  09:42 Найти цитируемый пост)
а зачем такое могло понадобится


В идеале должно получиться так: в левом столбце подпунктами будут названия организаций, и при наведении на одну из них будут подсвечиваются виды работ, выполненных для данного предприятия. В то-же время названия организаций являются ссылками на определенные страницы, также как и виды работ ведут куда-то.

Автор: ksnk 6.4.2012, 10:33
Цитата(Aliance @  6.4.2012,  09:42 Найти цитируемый пост)
в 4 строчке, похоже, все же используется не та переменная.

Угу. исправил. 
Цитата(Jazzzz @  6.4.2012,  09:44 Найти цитируемый пост)
но что-то не получается

А что делалось?

Автор: Jazzzz 6.4.2012, 11:37
Вот код, как я написал "на коленке":

Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
$(function(){
  $('#First_cells a').hover(function(){
     var _id=this.id;
     if(!_id) return;
     $('#Second_cells a.selected').not('.'+_id).removeClass('selected');
     $('#Second_cells a.'+_id).addClass('selected');
  },function(){
     $('#Second_cells a.selected').removeClass('selected');
  })
})
</script>
<title>Документ без названия</title>
</head>

<body>
<style type="text/css">
.groups_main .groupItem { float:right; width:100%;}
.groups_main ul { list-style: none outside none; font-size:13px; float:right; width:250px;}
.groups_main li a { padding:2px 6px; display:block;}
.groups_main li a:hover { background-color:#4196FE; color:#fff; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; text-decoration:none;}
</style>



<table width="700" border="1">
  <tr>
    <td width="224">
    <div id="First_cells"><a id="x1" href="#">Ссылка1</a><a id="x2" href="#">...</a> ...</div>
    <div id="First_cells"><a id="x1" href="#">Ссылка2</a><a id="x2" href="#">...</a> ...</div>
    <div id="First_cells"><a id="x1" href="#">Ссылка3</a><a id="x2" href="#">...</a> ...</div>
    
    
    </td>
    <td width="367">
     <div class="groups_main">
                    <div class="groupItem last">
                    <ul>
                    <li>
    <div id="Second_cells"><a class="x1 x2" href="#">Ссылка1</a><a class="x2" href="#">...</a> ...</div></li>
    
    <li><div id="Second_cells"><a class="x1 x2" href="#">Ссылка2</a><a class="x2" href="#">...</a> ...</div></li>
    
    <li><div id="Second_cells"><a class="x1 x2" href="#">Ссылка3</a><a class="x2" href="#">...</a> ...</div></li>
    </ul>
    </div>
    </div>
    
    </td>
  </tr>
</table>

</body>
</html>

Автор: ksnk 6.4.2012, 12:33
Ну, дык оно практически работает. Нужно только определить класс для ссылок с классом selected

http://jsfiddle.net/V9MRd/

Автор: Jazzzz 6.4.2012, 13:26
Цитата(ksnk @  6.4.2012,  12:33 Найти цитируемый пост)
http://jsfiddle.net/V9MRd/ 


А как там посмотреть html-код? Ты же как-то таблицу засунул. Она же видна в окне результата. И не мог бы ты все-таки в моем коде все это распихать как-нибудь...   smile 

Автор: ksnk 6.4.2012, 14:32
Там 3 части исходников
Вверху-слева - HTML - его нужно разместиьт внутри тего body
Внизу слева - Javascript - его нужно поместить в секцию header в тег script.
Вверху-справа - CSS - его нужно поместить в секцию header в тег style

по флажкам понятно, что придется подкюлючить еше и jquery

если объяснения слишком сложны - можно ткнуть правой кнопкой в окно результата (справа-снизу) и выбрать "просмотр кода фрейма"

Автор: Jazzzz 9.4.2012, 07:16
Большое спасибо, все работает. 
Плохо только то, что получается ссылка в ссылке, и если провести курсором между строк правого столбца, то видно, что там еще как бы ссылка без текста. Но думаю это незаметно. Вот примерно как у меня получилось:
Код

<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>
  
  <script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>

  
  <style type='text/css'>
    .groups_main .groupItem { float:right; width:100%;}
.groups_main ul { list-style: none outside none; font-size:13px; float:right; width:250px;}
.groups_main li a { padding:2px 6px; display:block;}
.groups_main li a:hover, .groups_main li a.selected { background-color:#4196FE; color:#fff; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; text-decoration:none;}
  </style>
  


<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){
$(function(){
  $('#First_cells a').hover(function(){
     var _id=this.id;
     if(!_id) return;
     $('#Second_cells a.selected').not('.'+_id).removeClass('selected');
     $('#Second_cells a.'+_id).addClass('selected');
  },function(){
     $('#Second_cells a.selected').removeClass('selected');
  })
})
});//]]>  

</script>


</head>
<body>
  
<table width="700" border="1">
  <tr>
    <td width="224">
    <div id="First_cells"><a id="x3" href="#">Ссылка1</a><a id="x2" href="#"></a></div>
    <div id="First_cells"><a id="x22" href="#">Ссылка2</a><a id="x2" href="#"></a></div>
    <div id="First_cells"><a id="x1" href="#">Ссылка3</a><a id="x2" href="#"></a></div>
    
    
    </td>
    <td width="367">
     <div class="groups_main">
                    <div class="groupItem last">
                    <ul>
                    <li>
    <div id="Second_cells"><a class="x1 x22" href="#">бугага1</a><a class="x2" href="#"></a></div></li>
    
    <li><div id="Second_cells"><a class="x1 x3" href="#">бугага2</a><a class="x2" href="#"></a></div></li>
    
    <li><div id="Second_cells"><a class="x1 x22" href="#">бугага3</a><a class="x2" href="#"></a></div></li>
    </ul>
    </div>
    </div>
    
    </td>
  </tr>
</table>


  
</body>


</html>

Автор: ksnk 9.4.2012, 07:35
Цитата(Jazzzz @  9.4.2012,  07:16 Найти цитируемый пост)
 то видно, что там еще как бы ссылка без текста


Цитата(Jazzzz @  9.4.2012,  07:16 Найти цитируемый пост)
<a id="x2" href="#"></a>

Эта, чтоли? А зачем она там такая? Без текста? И кто ее туда вставил?

Автор: Jazzzz 9.4.2012, 07:46
Пардон, это я похоже ступил...  smile  
Спасибо еще раз. Лишнее убрал, все работает как надо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)