Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.03.2015, 19:01
Новичок на форуме
Отправить личное сообщение для Hey,you Посмотреть профиль Найти все сообщения от Hey,you
 
Регистрация: 01.03.2015
Сообщений: 7

Связать data-атрибуты по клику
Привет! Как связать data-thumb="i" с data-slide="i" по клику на
.slides-bullets a


<ul class="slides">
  <li class="right" data-thumb="1"><img/><li>
  <li class="active" data-thumb="2"><img/></li>
  <li class="left" data-thumb="3"><img/></li>
</ul>

<ol class="slides-bullets">
  <li><a data-slide="1"></a></li>
  <li><a data-slide="2"></a></li>
  <li><a data-slide="3"></a></li>
</ol>

Последний раз редактировалось Hey,you, 06.03.2015 в 19:06.
Ответить с цитированием
  #2 (permalink)  
Старый 06.03.2015, 19:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Количество элементов этих списков всегда равны и всегда следуют по порядку, то есть, например, второй элемент LI первого списка, всегда будет соответствовать второму из второго?
Ответить с цитированием
  #3 (permalink)  
Старый 06.03.2015, 19:41
Новичок на форуме
Отправить личное сообщение для Hey,you Посмотреть профиль Найти все сообщения от Hey,you
 
Регистрация: 01.03.2015
Сообщений: 7

Да, порядок последовательный и соответствие сохранится. Мне нужно получить содержимое класса из первого списка - примерно знаю как реализовать. Но как связать активный по клику из ol списка элемент с соответствующим по индексу - ul?
Ответить с цитированием
  #4 (permalink)  
Старый 06.03.2015, 19:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Зачем вам классы, если последовательность всегда строгая проще использовать индекс элемента в наборе:

$('ol.slides-bullets').finf('a').click(function() {
    alert($('ul.slides').find('li').eq($(this).index()).html())   
})
Ответить с цитированием
  #5 (permalink)  
Старый 06.03.2015, 21:22
Новичок на форуме
Отправить личное сообщение для Hey,you Посмотреть профиль Найти все сообщения от Hey,you
 
Регистрация: 01.03.2015
Сообщений: 7

$('ol.slides-bullets').find('a').click(function() {
    $('ul.slides').find('li').eq($(this).index()).css("color","red"); 
})


Работает только для первого элемента.
Ответить с цитированием
  #6 (permalink)  
Старый 06.03.2015, 22:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Hey,you,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">

  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
   $(function()
     {
       var a = $('ol.slides-bullets').find('a'), li = $('ul.slides').find('li');
       a.click(function(event)
         {
           event.preventDefault()
           li.eq(a.index(this)).css("background", "red");
         }
       )
     }
   );
  </script>
</head>

<body>
 <ul class="slides">
  <li class="right" data-thumb="1"><img/>1</li>
  <li class="active" data-thumb="2"><img/>2</li>
  <li class="left" data-thumb="3"><img/>3</li>
</ul>
<ol class="slides-bullets">
  <li><a data-slide="1">1</a></li>
  <li><a data-slide="2">2</a></li>
  <li><a data-slide="3">3</a></li>
</ol>



</body>

</html>
Ответить с цитированием
  #7 (permalink)  
Старый 06.03.2015, 22:25
Новичок на форуме
Отправить личное сообщение для Hey,you Посмотреть профиль Найти все сообщения от Hey,you
 
Регистрация: 01.03.2015
Сообщений: 7

Спасибо,
почитал в направлении .eq(), тоже работает:
<ul class="slides">
   <li class="right">img 1</li>
   <li class="active">img 2</li>
   <li class="left">img 3</li>
</ul>

<ul class="slides-bullets">
   <li><button>Кнопка 1</button></li>
   <li><button>Кнопка 2</button></li>
   <li><button>Кнопка 3</button></li>
</ul>

var $bullets = $('.slides-bullets button');
$('ul').on('click', 'button', function() {
    var indx = $bullets.index(this);
    $('ul.slides li').eq(indx).css("color","red");
});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
По клику на картинку с ссылкой открывается портфолио, а нужен переход по ссылке nitoiti Общие вопросы Javascript 7 08.09.2014 14:39
Открытие/закрытие дива по клику ссылки и закрытие по клику вне слоя vertmann Общие вопросы Javascript 3 18.11.2013 14:36
вопрос по видимости переменных. yiooxir Angular.js 3 31.10.2013 12:37
data атрибуты для хранения ajax-данных oli AJAX и COMET 4 23.08.2013 10:33
атрибуты data Valentinka_1 jQuery 3 17.07.2013 13:16