4

I can't seem to add IDs to the buttons in a jQuery-created dialog. I can select the buttons after the dialog is declared via selectors as follows:

var buttons = $("#dialog").siblings(".ui-dialog-buttonpane").find("button");

but when I try to do:

buttons[0].attr('id', 'someId');

I get:

TypeError: Object #<an HTMLButtonElement> has no method 'attr'

Any suggestions? I don't see anything in the jQuery docs that implies that attr() shouldn't work on buttons.

2
  • I agree with @jigfox - currently you have 13 questions have and not accepted an answer to any of them. Commented Sep 3, 2010 at 15:40
  • sorry about that - i always sort of forget. fixing it now. Commented Sep 5, 2010 at 11:58

1 Answer 1

10

Yes:

$(buttons[0]).attr('id', 'someId');

the attr() method is declared on jQuery objects, but buttons[0] gives you a standard DOM object (of type HTMLButtonElement in this case). jQuery objects are augmented arrays of DOM objects, so indexing into them always gives you the original DOM objects.

Since jQuery does not add methods to DOM objects themselves, you must first wrap the DOM object in a jQuery object to access these methods.

EDIT Then again… there is no need to use jQuery at all for this task.

buttons[0].id = 'someId';
Sign up to request clarification or add additional context in comments.

3 Comments

@GenericTypeTea: Oh yes, there is a simpler way. See my edit.
@GenericTypeTea: It's too easy with jQuery to start thinking that the DOM does not exist anymore and everything needs to be done with and through jQuery.
@Tomalak - I know what you mean. I sometimes find myself totally forgetting there's such a thing as a DOM and JavaScript. jQuery is great, but can verge on evil.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.