Create a Div with Attributes Using jQuery
Creating dynamic DOM elements with custom attributes is a fundamental
task in JavaScript development. This article provides the correct,
standard syntax for using jQuery’s $() factory function to
create a new <div> element and assign attributes,
styles, and event handlers to it in a single, readable statement.
The Recommended Syntax: The Object Literal Pattern
The most robust and readable way to create an element with attributes in jQuery is by passing the element tag as the first argument, followed by a plain JavaScript object containing the attributes as the second argument:
const $newDiv = $("<div>", {
id: "user-profile",
"class": "card profile-box",
text: "User profile details go here.",
title: "User Profile",
"data-role": "admin"
});
// Append the new div to the DOM
$("#container").append($newDiv);Supported Properties in the Attribute Object
When using this method, jQuery handles standard HTML attributes, special jQuery methods, and event handlers:
- Standard HTML Attributes: Properties like
id,title,href,src, and customdata-*attributes are set directly on the element. Note that multi-word attributes or reserved keywords (like"class"and"data-id") should be enclosed in quotes. - jQuery Helper Methods: Certain keys correspond
directly to jQuery methods rather than plain attributes. Common examples
include:
text: Sets the text content via.text().html: Sets the inner HTML via.html().css: Accepts an object of CSS properties to apply inline styles via.css().
- Event Handlers: You can attach events directly
within the same object (such as
click,mouseenter, orchange):
const $clickableDiv = $("<div>", {
id: "alert-box",
class: "notification",
text: "Click me to dismiss",
css: {
backgroundColor: "#ffeb3b",
padding: "10px",
cursor: "pointer"
},
click: function() {
$(this).fadeOut();
}
});
$("body").append($clickableDiv);Alternative Syntax Methods
1. Direct HTML String
You can define the entire element as a raw HTML string. While functional, it is more prone to formatting errors and concatenation issues when dealing with dynamic values:
const $newDiv = $('<div id="my-div" class="box">Content</div>');2. Method Chaining
You can instantiate the element first and chain jQuery manipulation methods. While clear, it is more verbose than the object literal approach:
const $newDiv = $("<div>")
.attr("id", "my-div")
.addClass("box")
.text("Content");Summary
The $("<tag>", { ... }) syntax is the cleanest and
most performant standard for creating elements in jQuery. It centralizes
element creation, attribute assignment, inline styling, and event
binding into a single declarative structure.