JQuery генерирует уникальные идентификаторы
Вот что у меня есть:
<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
, но не знаю, как это сделать.
Ответы
Ответ 1
Для генерации случайных идентификаторов вы можете использовать этот.
<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>
Ответ 2
Мне не нужен вечный уникальный/случайный идентификатор, просто что-то уникальное для каждой страницы, и все эти решения казались мне излишними, поэтому я придумал следующее:
var uniqId = (function(){
var i=0;
return function() {
return i++;
}
})();
Ответ 3
Так как 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/
Ответ 4
Предполагая, что вы вызываете код в каком-то цикле, вы можете просто заменить
<a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a>
с
<a href="<?=$arItem["LINK"]?>#nav-link"><?=$arItem["TEXT"]?></a>
таким образом "# nav-link" добавляется в конце каждой ссылки. Javascript или jquery не нужны вообще: D
Ответ 5
Я всегда использую следующий код для создания уникальных идентификаторов. Я нашел этот метод несколько лет назад в 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
Ответ 6
Я знаю, что это уже год, однако OP заявила, что не знает, как применять идентификаторы. Это можно легко выполнить с использованием прототипа rand 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());
}
Ответ 7
Мы можем создать уникальный идентификатор для элементов, используя
uniqueInd() в подстроке:
UniqueID
_.uniqueId([prefix])
Создайте глобально уникальный идентификатор для клиентских моделей или элементов DOM, которым он нужен. Если передан префикс, к нему будет добавлен идентификатор.
_.uniqueId('contact_');
=> 'contact_104'