我动态创建一个元素,我该如何给它一个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。
非常感谢
答案 0 :(得分: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'
}));
}
答案 1 :(得分:1)
只需分配id via(如果你用新的Element()创建了元素):
var yourCustomId = "myId";
el.id = yourCustomId;
或使用Mootools attr-setting功能:
var yourCustomId = "myId";
el.setProperty("id", yourCustomId);
答案 2 :(得分:0)
你可以这样给它,
var uniqueNumber = 1; //define uniqueNumber globally and increament at each element creation
使用javascript
el.id = 'idprefix' + uniqueNumber++)
使用jQuery
$(el).attr('id','idprefix' + uniqueNumber++);
答案 3 :(得分:0)
在jQuery中,要创建一个带ID的div,你可以这样做:
function createDiv(id) {
$("body").append("<div id=" + id + "></div>");
}
createDiv("myNewDivId");
答案 4 :(得分:0)
_addQuestionElement
,我认为您需要为每个问题元素生成唯一ID。
var IDs = 0; var pfx = "id_"; _addQuestionElement : function() { ... el.attr("id", pfx + ++IDs);
答案 5 :(得分:0)
var el = $('<div />') .attr('id', myVal);
答案 6 :(得分: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' })
答案 7 :(得分:0)
您可以使用jQuery插件idfy。
完全披露:我写了这个插件:)