Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как сохранить ссылку на тэг по которому кликнул ? (https://javascript.ru/forum/misc/55184-kak-sokhranit-ssylku-na-tehg-po-kotoromu-kliknul.html)

mitiya 16.04.2015 18:40

как сохранить ссылку на тэг по которому кликнул ?
 
Здравствуйте.

есть множество div без класса или id. при клике по одному из них можно поместить x = $(this) в переменную. И позже сделать $(x) и сделать что-то с тем дивом. Но мне надо сохранить х в localstorage.
х где-то внутри себя ссылается на самого себя, из-за этого его нельзя конвертнуть в JSON. Хотелось бы узнать как из $(this) достать ссылку на именно это див, что не хранить весь объект.

рони 16.04.2015 19:09

mitiya,
храните индекс нажатого элемента
var divs = $('div');
var x = divs.index(this);
var elem = $('div').eq(x);

mitiya 16.04.2015 20:05

а получить конкретный путь к элементу можно?
что бы использовать индекс надо получить еще и корневой элемент, при сложной структуре это трудно.

рони 16.04.2015 20:09

Цитата:

Сообщение от mitiya
что бы использовать индекс надо получить еще и корневой элемент

где в коде вы увидели корневой элемент?
Цитата:

Сообщение от mitiya
а получить конкретный путь к элементу можно?

а чем путь через индекс не нравится?

mitiya 16.04.2015 20:18

если у меня див в диве то как я его найду?

рони 16.04.2015 20:22

mitiya,
я показал как -- попробуйте это применить - сделайте макет с минимальным html - 10 строк кода и будет чудесное исцеление

рони 16.04.2015 21:21

localStorage сохранение кликнутых элементов
 
mitiya,
посмотрите 2 раза, кликать по цифрам
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   div.active::after {
    content: "(ты тыкал меня уже)";
    padding: 0 0 0 5px;
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
    var items = JSON.parse(window.localStorage.getItem('x') || "{}");
    var divs = $('div');
    for(var key in items) {
      if (items.hasOwnProperty(key)) {
        $('div').eq(key).addClass('active');
      }
    }
    window.localStorage.setItem('x', JSON.stringify(items));
    divs.click(function(event) {
    event.stopPropagation();
    var i = divs.index(this);
    items[i] = 1;
    window.localStorage.setItem('x', JSON.stringify(items));
    $('div').eq(i).addClass('active');
})
});


  </script>
</head>

<body>
<div >
<div >1</div>
<div >2</div>
<div >3</div>
<div >4</div>
<div >5</div>
<div >6</div>
<div >7</div>
</div>
<div >8</div>
<div >9</div>
<div >10</div>
<div >11</div>
<div >12</div>
<div >
<div >13</div>
<div >14</div>
<div >15</div>
<div >16</div>
</div>



</body>

</html>

mitiya 16.04.2015 22:14

я понял как это работает и оно работает в случае "макет с минимальным html - 10 строк кода",но вот у этих дивов около 700 вперемешку с img и h и тд. и вот это код не работает
$('html, body').animate({
		scrollTop: $("div",$('#text')).eq(br.storage.get('pos')).offset().top
	}, 200);

точнее он работает, но скролит не к тому элементу, и чем индекс больше тем больше смещение.

Vlasenko Fedor 16.04.2015 22:43

mitiya,
прокрутка для чего может так
http://jsfiddle.net/vlasenkofedor/2St2g/
а так ссылку на которую кликнули можно где угодно сохранить и даже в элемент который кликнули

рони 16.04.2015 22:58

mitiya,
да хоть 1000 элементов если это одна и таже страница -- покажите код


Часовой пояс GMT +3, время: 08:46.