Javascript jQuery生成唯一的ID
以下是我所拥有的:Javascript jQuery生成唯一的ID,javascript,php,jquery,Javascript,Php,Jquery,以下是我所拥有的: <a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a> 但是这段代码不起作用,因为jQuery将不知道我正在链接到哪个链接。所以我想我需要生成唯一的id,但不知道如何做。要生成随机id,可以使用这个 <script type="text/javascript"> function Generator() {}; Generator.prototype.ran
<a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a>
但是这段代码不起作用,因为jQuery将不知道我正在链接到哪个链接。所以我想我需要生成唯一的
id
,但不知道如何做。要生成随机id,可以使用这个
<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>
函数生成器(){};
Generator.prototype.rand=Math.floor(Math.random()*26)+Date.now();
Generator.prototype.getId=函数(){
返回这个.rand++;
};
var idGen=新的生成器();
点击
假设您在某种循环中调用代码,您只需替换
<a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a>
与
这样,在每条链路的末尾添加“#导航链路”。根本不需要javascript或jquery:D我总是使用以下代码来生成唯一的ID。几年前,我在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帮助程序:
我知道这是一个岁的孩子,但是,OP说他不知道如何应用ID。使用上面使用的rand原型可以很容易地实现这一点
/// 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());
}
我们可以使用创建元素的唯一id 下划线: 独一无二的 为需要全局唯一id的客户端模型或DOM元素生成全局唯一id。如果传递了前缀,则id将附加到前缀
_.uniqueId('contact_');
=> 'contact_104'
我不需要一个永远唯一/随机的id,只需要每页都唯一的id,所有这些解决方案对我来说似乎都太过分了,所以我提出了以下建议:
var uniqId = (function(){
var i=0;
return function() {
return i++;
}
})();
从v1.9开始,jQueryUI有一个内置的方法来创建唯一的id,称为uniqueId() 这段代码将在属于myclass的每个元素上设置一个唯一的id
$(".myclass").each(function () {
$(this).uniqueId();
});
请注意,至少在我的测试中,如果元素已经有一个id,则不能分配新id
因此,这个div将使用上面的Javascript代码获得一个唯一的id
<div class="myclass"/>
但这不会
<div class="myclass" id="myId"/>
请参阅以获取更多信息是的,所有链接必须在结尾处有
#nav link
,谢谢回复,但我已经看到了一些生成id的方法,但我不知道如何根据我的代码应用它们,例如,10个具有相同id的链接,代码无法正常工作,因为每个id对于每个链接都必须是唯一的,我举个简单的例子。每次通过简单递增返回另一个数字。你可以随心所欲地使用它。它在javascript中使用静态方法:)我喜欢那些添加不懂的额外内容的程序员。这个函数是随机的,因为它没有Math.random()
,因为您得到的是毫秒时间。在0和25之间添加一个随机数不会使它变得更随机。在我的回答中,我提出了一个随机生成器,而不是增量生成器,因此我的答案与我的代码是一致的。如你所知,毫秒只会增长,所以它们不是“完全随机的”。PHP在服务器端执行,第一次单击后我得到一个链接,第二次单击后我才得到HashTag的链接对不起,但我不明白。你能再解释一下吗。第二次点击后是什么?什么时候在服务器上执行PHP?你有某种Ajax吗?我在PHP数组中有10个链接。这些链接就像列表一样显示在网站上。但是当我点击链接时,我只得到一个没有任何hashtag的链接,因为PHP在服务器端执行。当我第二次点击链接时,我已经得到了我需要的东西你说的“当我第二次点击链接时,我已经得到了我需要的东西”是什么意思。当你再次加载页面时,你不想使用散列还是在另一个页面上?请注意,uniqueId()
是在JQuery UI中添加的,而不是核心库。我认为这应该包括一个回调,其中生成的ID作为参数,以防你想将其存储在数组或其他什么东西中。这是最实用的解决方案,你应该得到更多的选票。我试过了,如果你一次发布多个5件事情,那么创建唯一ID就失败了。你能提供一个更好的吗?
$(".myclass").each(function () {
$(this).uniqueId();
});
<div class="myclass"/>
<div class="myclass" id="myId"/>