Ma9ic
Ma9ic

Reputation: 1125

create id dynamically

I am creating a element dynamically how would i give this an id?

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

im using moo tools and jquery.

Many Thanks

Upvotes: 0

Views: 241

Answers (8)

n3rd
n3rd

Reputation: 6089

You can use the jQuery plugin idfy.

Full Disclosure: I wrote that plugin :)

Upvotes: 0

Dimitar Christoff
Dimitar Christoff

Reputation: 26165

all elements created or accessed by MooTools automatically get a unique uid (for the DOM) anyway, saves you from having to keep state yourself (if you want to be doing this automatically).

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

so...

_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);    
},

to give it an id via the combined element constructor, it goes:

var el = new Element('div#someid.dg-question-label') or add it in the properties passed to the constructor:

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

Upvotes: 0

dom
dom

Reputation: 6832

Your code looks like Mootools, here's how I'd do it (cleaned up your code a bit)

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

If you're generating the same element multiple times, your id will need to somehow be unique each time.

You could also do without that el variable (unless of course it's used somewhere further in the function that you didn't include)

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

Upvotes: 2

Faust
Faust

Reputation: 15404

var el = $('<div />') .attr('id', myVal);

Upvotes: 0

Kerem
Kerem

Reputation: 11586

_addQuestionElement, I think you need to generate a unique id for each question element.

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

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

Upvotes: 0

Dan
Dan

Reputation: 526

In jQuery, to create a div with an ID, you would do something like this:

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

createDiv("myNewDivId");

Upvotes: 0

DerWaldschrat
DerWaldschrat

Reputation: 1915

Just assign the id via (if you created the element with new Element()):

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

Or use Mootools attr-setting capabilities:

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

Upvotes: 1

Adil
Adil

Reputation: 148160

You can give it like this,

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

With javascript

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

With jQuery

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

Upvotes: 0

Related Questions