使用jQuery.guid

16

我可以将 jQuery.guid 用于自己的需求吗?我有元素需要一个唯一的 id 属性,所以我想这样设置它: jQuery.guid++

我能否将jQuery.guid用于我的需求? 我有元素需要唯一的id属性,因此我希望像这样将其设置为jQuery.guid ++

var guid = jQuery.guid++;

$('<a href="#" id="a' + guid + '">link</a>').appendTo('body');

这安全吗?会破坏任何代码或插件吗?


1
它不会破坏jQuery。有人可能编写一个糟糕的插件,如果更改jQuery.guid,则可能会破坏它。我建议不要这样做,因为任何新的jQuery版本都可能会破坏它。$.guid真的不应该是公开的。 - Raynos
2个回答

15

你可以使用这段代码生成一个 GUID:

'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);
});

3

这不会破坏任何东西,但是如果你要将$.guid用作全局变量,就没有必要再创建一个名为guid的变量。

只需初始化$.guid一次,然后直接使用它即可。

// initialize once
$.guid= 0;

// use it directly when needed
$('<a href="#" id="a' + ($.guid++) + '">link</a>').appendTo('body');

更新:

看起来$.guid在jQuery内部用于live事件,不应该用于DOM。你应该自己创建全局变量并进行递增。


是的,但 $.guid 已经被 jQuery 内部使用了。我需要重用 guid 给我的标签和事件所提供的任何值,因此我需要该变量的副本。 - qwertymk
哦,对不起,我真的不知道 $ .guid 是在内部使用的。在这种情况下,我会按照我上面写的方式去做,只是换一个变量名,比如 $ .myguid,以确保安全。 - Daniel
是的,但我不确定jQuery在删除或添加元素或事件时是否会跟踪它所处的数字。我需要知道它是否对任何插件或事件跟踪很重要。我不希望它破坏任何代码。 - qwertymk
这就是为什么我建议使用不同的变量名,以免影响$.guid。你为什么要使用jQuery内部使用的变量呢?如果您只需要一个全局唯一的数字,则可以创建自己的变量并自行增加该变量。这对您的需求应该足够了,或者我有什么误解吗? - Daniel
1
是的,我宁愿不自己创建变量。我只需要知道它是否会影响jQuery中的任何内容。 - qwertymk
为什么不只是将一些随机文本(如应用程序描述符)附加到$.guid上?这样它就应该是本地唯一的了? - Zahir J

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接