0

我遇到了这个麻烦:我创建了一个插件,它生成并附<div>加到 my <body>,但是它<div>有一个 id,如果我多次调用这个函数,我的网站由于明显的原因崩溃,我不能使用一个类,因为我需要唯一我附加的 div 的属性,我通过创建一个随机数并将其添加到我的 id 来解决这个问题,如下所示:

var unique_number = Math.floor(Math.random()*1000001);
var tempImg = '<img id="tempImg'+unique_number+'" src="' + path + ' "/>';
$('body').append(tempImg); 
//And I use it like
$('#tempImg'+unique_number).load(function(){ //blabla }

但我非常确信这不是最好的方法,有没有人有另一种更好/最有效的解决方案?谢谢。

4

4 回答 4

1

如果我真的需要一个唯一的(该页面的)标识符,我实际上会使用一个计数器,但你实际上并不需要一个id

var img = $('<img src="' + path + ' "/>');
img.load(function() {
    // ...
});
img.appendTo('body');
于 2012-08-03T03:35:11.063 回答
1

您可以尝试length属性:

var count = $('img[id^="tempImg"]').length + 1;
var tempImg = '<img id="tempImg'+count+'" src="' + path + ' "/>';
于 2012-08-03T03:36:29.567 回答
1

您可以在一个字符串函数中编写它:

$("<div/>")
  .appendTo("body")
  .append($("<img>", { "src": path })
            .load(function () {
              // do smth
            })
  );
于 2012-08-03T03:42:09.533 回答
0

是的,您可以定义一个计数器,并在每次创建新元素时增加它。

var nextId = (function(){
    var prefix = 'some_really_uniq_string_';
    var id = 0;
    return function(){
        return prefix + (id++);
    };
})();
//each time you create a new element, call nextId()
于 2012-08-03T03:37:09.160 回答