2012-08-07 94 views
0

我正在动态创建一个元素我如何给这个ID?动态创建ID

_addQuestionElement : function() { 
     var el = new Element('div'); 
     el.addClass('dg-question-label'); 
     el.set('html', this._getCurrentQuestion().label); 
     $(this.html.el).adopt(el); 
    }, 

即时通讯使用moo工具和jquery。

非常感谢

+1

动态地为随机生成的,或只是想知道如何在代码中设置一个特定的ID? – dom 2012-08-07 13:03:53

回答

0

你可以给它这个样子,

var uniqueNumber = 1; //define uniqueNumber globally and increament at each element creation 

用JavaScript

el.id = 'idprefix' + uniqueNumber++) 

使用jQuery

$(el).attr('id','idprefix' + uniqueNumber++); 
+0

拒绝投票的原因? – Adil 2012-08-09 12:49:15

1

刚分配通过ID(如果您创建了e字元素与新元素()):

var yourCustomId = "myId"; 
el.id = yourCustomId; 

或者使用Mootools的ATTR设定功能:

var yourCustomId = "myId"; 
el.setProperty("id", yourCustomId); 
0

在jQuery中,创建具有ID的DIV,你会做这样的事情:

function createDiv(id) { 
    $("body").append("<div id=" + id + "></div>"); 
} 

createDiv("myNewDivId"); 
0

_addQuestionElement,我想你需要为每个问题元素生成一个唯一的ID。

 
var IDs = 0; 
var pfx = "id_"; 

_addQuestionElement : function() { 
    ... 
    el.attr("id", pfx + ++IDs); 
2

你的代码看起来像MooTools的,这里就是我会做(清理你的代码位)

_addQuestionElement: function() { 
    var el = new Element('div', { 
     'class': 'dg-question-label', 
     html: this._getCurrentQuestion().label, 
     id: 'yourId' 
    }); 
    $(this.html.el).adopt(el); 
} 

如果您正在生成的多个相同的元素,您的ID将需要以某种方式每次都是独一无二的。

你也可以做,而不在于EL变量(当然,除非它的使用在函数某处进一步,你不包括)

_addQuestionElement: function() { 
    $(this.html.el).adopt(new Element('div', { 
     'class': 'dg-question-label', 
     html: this._getCurrentQuestion().label, 
     id: 'yourId' 
    })); 
}​ 
0
var el = $('<div />') .attr('id', myVal); 
0

由MooTools的创建或访问的所有元素自动获得无论如何,唯一的uid(对于DOM)可以让你不必自己保持状态(如果你想自动执行此操作)。

console.log(Slick.uidOf(new Element('div')))

所以......

_addQuestionElement: function() { 
    var el = new Element('div.dg-question-label', { 
     html: this._getCurrentQuestion().label 
    }); 

    // prefix number with uid- 
    el.set('id', 'uid' + Slick.uidOf(el)).inject(this.html.el);  
}, 

通过合并元素构造给它一个ID,这是不言而喻:

var el = new Element('div#someid.dg-question-label')或传递给构造属性添加:

new Element('div', { id: 'foo' })

0

您可以使用jQuery插件idfy

充分披露:我写的插件:)