动态创建id

时间:2012-08-07 13:02:09

标签: javascript jquery mootools

我动态创建一个元素,我该如何给它一个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。

非常感谢

8 个答案:

答案 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

完全披露:我写了这个插件:)