jQuery生成唯一ID

时间:2014-10-05 14:19:51

标签: javascript php 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,但不知道该怎么做。

7 个答案:

答案 0 :(得分:17)

我不需要一个永远独特/随机的ID,只是每页独一无二的东西,所有这些解决方案对我来说似乎有点过头了所以我想出了这个:

var uniqId = (function(){
    var i=0;
    return function() {
        return i++;
    }
})();

答案 1 :(得分:9)

为了生成随机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>

答案 2 :(得分:5)

从v1.9开始,jQueryUI有一个用于创建唯一id的内置方法,名为uniqueId()。

此代码将在属于myclass的每个元素上设置唯一ID。

$(".myclass").each(function () {
    $(this).uniqueId();
});

请注意,至少在我的测试中,如果元素已经有一个,则无法分配新的id。

因此,这个div将获得上述Javascript代码的唯一ID

<div class="myclass"/>

但这不会

<div class="myclass" id="myId"/>

有关详细信息,请参阅https://api.jqueryui.com/uniqueId/

答案 3 :(得分:2)

假设你在某种循环中调用代码,你可以只替换

<a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a>

<a href="<?=$arItem["LINK"]?>#nav-link"><?=$arItem["TEXT"]?></a>

这样在每个链接的末尾添加“#nav-link”。根本不需要javascript或jquery:D

答案 4 :(得分:2)

我总是使用以下代码生成唯一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助手: https://github.com/mazong1123/neatjs

答案 5 :(得分:2)

我知道现在已经有一年了,然而,OP说他不知道&#39;怎么&#39;申请ID。这可以通过上面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());
}

答案 6 :(得分:2)

我们可以使用创建元素的唯一ID 下划线中的uniqueId()

  

UNIQUEID

 _.uniqueId([prefix]) 
     

为需要的客户端模型或DOM元素生成全局唯一的ID。如果传递前缀,则会将ID附加到其中。

_.uniqueId('contact_');
=> 'contact_104'