Вот что я имею:
<a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a>
Это массив PHP, который содержит некоторые ссылки. Мне нужно добавить дополнительный хэш-параметр #nav-link
в конец каждой ссылки.
Вот как я пытался это сделать:
<a id="likeLink" href=""><?=$arItem["TEXT"]?></a> <script> $(document).ready(function () { $("#likeLink").attr("href", <?=$arItem["LINK"]?> + "#nav-link"); }); </script>
Но этот код не работает, потому что jQuery не будет знать, с какими ссылками я связываюсь. Поэтому я предполагаю, что мне нужно создать уникальные ids
, но не знаю, как это сделать.
Для генерации случайных идентификаторов вы можете использовать этот.
<script type="text/javascript"> function Generator() {}; Generator.prototype.rand = Math.floor(Math.random() * 26) + Date.now(); Generator.prototype.getId = function() { return this.rand++; }; var idGen =new Generator(); </script> </html> <body> <!-- Place this in the body of the page content --> <button onclick="console.log(idGen.getId())">click</button> </body>
Мне не нужен вечный уникальный / случайный идентификатор, просто что-то уникальное для каждой страницы, и все эти решения казались мне излишними, поэтому я придумал это:
var uniqId = (function(){ var i=0; return function() { return i++; } })();
Предполагая, что вы вызываете код в каком-то виде, вы можете просто заменить
<a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a>
с
<a href="<?=$arItem["LINK"]?>#nav-link"><?=$arItem["TEXT"]?></a>
Таким образом, в конце каждой ссылки добавляется «# nav-link». Нет javascript или jquery вообще: D
Я всегда использую следующий код для создания уникальных идентификаторов. Я нашел этот метод несколько лет назад в Stackoverflow:
/** * Create a random Guid. * * @return {String} a random guid value. */ newGuid: function() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }).toUpperCase(); }
И вы можете найти другие полезные помощники js в моей библиотеке: https://github.com/mazong1123/neatjs
Поскольку v1.9, jQueryUI имеет встроенный метод для создания уникальных идентификаторов, называемых uniqueId ().
Этот код будет устанавливать уникальный идентификатор для каждого элемента, принадлежащего myclass.
$(".myclass").each(function () { $(this).uniqueId(); });
Обратите внимание, что, по крайней мере, в моем тестировании вы не можете назначить новый идентификатор, если элемент уже имеет его.
Таким образом, этот div получит уникальный идентификатор с вышеуказанным кодом Javascript
<div class="myclass"/>
Но это не
<div class="myclass" id="myId"/>
Дополнительную информацию см. На странице https://api.jqueryui.com/uniqueId/.
Я знаю, что это уже год, однако ОП заявила, что не знает, как применять идентификаторы. Это можно легко выполнить с использованием прототипа rand by beri выше, как используется здесь.
/// insure ALL myClass elements have a unique ID. if(!$('.myClass').attr("id")){ $('.myClass').attr("id",idGen.getId()); console.log($('.myClass').attr("id")); }
или используя гораздо более широкую кисть:
/// insure ALL anchor tags have a unique ID. if(!$('a').attr("id")){ $('a').attr("id",idGen.getId()); }
Мы можем создать уникальный идентификатор для элементов using uniqueId () в Underscore:
уникальный идентификатор
_.uniqueId([prefix])
Создайте глобально уникальный идентификатор для клиентских моделей или элементов DOM, которым он нужен. Если префикс передан, к нему будет добавлен идентификатор.
_.uniqueId('contact_'); => 'contact_104'