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"/>