Element

This represents almost everything in the DOM.

class Element {}

Constructors

this
this(Document _parentDocument, string _tagName, string[string] _attributes, bool _selfClosed)

Generally, you don't want to call this yourself - use Element.make or document.createElement instead.

this
this(string _tagName, string[string] _attributes)

Convenience constructor when you don't care about the parentDocument. Note this might break things on the document. Note also that without a parent document, elements are always in strict, case-sensitive mode.

Members

Functions

absoluteLeft
int absoluteLeft()
absoluteTop
int absoluteTop()

These properties are useless in most cases, but if you write a layout engine on top of this lib, they may be good +////ditt

addChild
Element addChild(string tagName, string childInfo, string childInfo2)

convenience function to quickly add a tag with some text or other relevant info (for example, it's a src for an <img> element instead of inner text)

addChild
Element addChild(Element e)
addChild
Element addChild(string tagName, Element firstChild, string info2)

.

addChild
Element addChild(string tagName, Html innerHtml, string info2)
addChildren
void addChildren(T t)

Convenience function to append text intermixed with other children. For example: div.addChildren("You can visit my website by ", new Link("mysite.com", "clicking here"), "."); or div.addChildren("Hello, ", user.name, "!"); See also: appendHtml. This might be a bit simpler though because you don't have to think about escaping.

addClass
Element addClass(string c)

Adds a string to the class attribute. The class attribute is used a lot in CSS.

addEventListener
void addEventListener(string event, EventHandler handler, bool useCapture)
Undocumented in source. Be warned that the author may not have intended to support it.
addField
Element addField(string label, string name, string type, FormFieldOptions fieldOptions)

Tags: HTML, HTML5

addField
Element addField(Element label, string name, string type, FormFieldOptions fieldOptions)
Undocumented in source. Be warned that the author may not have intended to support it.
addField
Element addField(string label, string name, FormFieldOptions fieldOptions)
Undocumented in source. Be warned that the author may not have intended to support it.
addField
Element addField(string label, string name, string[string] options, FormFieldOptions fieldOptions)
Undocumented in source. Be warned that the author may not have intended to support it.
addSibling
Element addSibling(string tagName, string childInfo, string childInfo2)

Another convenience function. Adds a child directly after the current one, returning the new child.

addSibling
Element addSibling(Element e)
addSubmitButton
Element addSubmitButton(string label)
Undocumented in source. Be warned that the author may not have intended to support it.
appendChild
Element appendChild(Element e)

Appends the given element to this one. The given element must not have a parent already.

appendChildren
void appendChildren(Element[] children)

.

appendHtml
Element[] appendHtml(string html)

Appends the given html to the element, returning the elements appended

appendText
Element appendText(string text)

Appends the given to the node.

classNames
string[] classNames()

Splits the className into an array of each class given

cloneNode
Element cloneNode(bool deepClone)

Clones the node. If deepClone is true, clone all inner tags too. If false, only do this tag (and its attributes), but it will have no contents.

firstInnerText
string firstInnerText()

Fetches the first consecutive text nodes concatenated together.

getAttribute
string getAttribute(string name)

Gets the given attribute value, or null if the attribute is not set.

getElementById
Element getElementById(string id)

.

getElementsByClassName
Element[] getElementsByClassName(string cn)

.

getElementsBySelector
Element[] getElementsBySelector(string selector)

Returns elements that match the given CSS selector

getElementsByTagName
Element[] getElementsByTagName(string tag)

.

getParent
T getParent(string tagName)

Gets the nearest node, going up the chain, with the given tagName May return null or throw.

hasAttribute
bool hasAttribute(string name)

Returns if the attribute exists.

hasClass
bool hasClass(string c)

Returns whether the given class appears in this element.

insertAfter
Element insertAfter(Element where, Element what)

Inserts the given element what as a sibling of the this element, after the element where in the parent node.

insertBefore
Element insertBefore(Element where, Element what)

Inserts the second element to this node, right before the first param

insertChildAfter
void insertChildAfter(Element child, Element where)

.

nodeValue
string nodeValue()

W3C DOM interface. Only really meaningful on TextNode instances, but the interface is present on the base class.

optionSelector
MaybeNullElement!SomeElementType optionSelector(string selector, string file, size_t line)

If a matching selector is found, it returns that Element. Otherwise, the returned object returns null for all methods.

parentNode
inout(Element) parentNode()

.

parentNode
Element parentNode(Element e)
Undocumented in source. Be warned that the author may not have intended to support it.
prependChild
Element prependChild(Element e)

Puts the current element first in our children list. The given element must not have a parent already.

querySelector
Element querySelector(string selector)

Note: you can give multiple selectors, separated by commas. It will return the first match it finds.

querySelectorAll
Element[] querySelectorAll(string selector)

a more standards-compliant alias for getElementsBySelector

removeAllChildren
void removeAllChildren()

Removes all inner content from the tag; all child text and elements are gone.

removeAttribute
Element removeAttribute(string name)

Removes the given attribute from the element.

removeChild
Element removeChild(Element c)

Removes the given child from this list.

removeChildren
Element[] removeChildren()

This removes all the children from this element, returning the old list.

removeClass
Element removeClass(string c)

Removes a particular class name.

removeFromTree
Element removeFromTree()

shorthand for this.parentNode.removeChild(this) with parentNode null check if the element already isn't in a tree, it does nothing.

reparent
void reparent(Element newParent)

.

replaceChild
Element replaceChild(Element find, Element replace)

.

replaceChild
void replaceChild(Element find, Element[] replace)

Replaces the given element with a whole group.

replaceWith
Element replaceWith(Element e)

Replaces this element with something else in the tree.

requireElementById
SomeElementType requireElementById(string id, string file, size_t line)

Calls getElementById, but throws instead of returning null if the element is not found. You can also ask for a specific subclass of Element to dynamically cast to, which also throws if it cannot be done.

requireSelector
SomeElementType requireSelector(string selector, string file, size_t line)

ditto but with selectors instead of ids

setAttribute
Element setAttribute(string name, string value)

Sets an attribute. Returns this for easy chaining

setValue
void setValue(string field, string value)
Undocumented in source. Be warned that the author may not have intended to support it.
stealChildren
Element[] stealChildren(Element e, Element position)

Reparents all the child elements of e to this, leaving e childless.

stripOut
void stripOut()

Strips this tag out of the document, putting its inner html as children of the parent.

swapNode
Element swapNode(Element child, Element replacement)

swaps one child for a new thing. Returns the old child which is now parentless.

toPrettyString
string toPrettyString(bool insertComments, int indentationLevel)

Writes out with formatting. Be warned: formatting changes the contents. Use ONLY for eyeball debugging.

toPrettyStringIndent
string toPrettyStringIndent(bool insertComments, int indentationLevel)
Undocumented in source. Be warned that the author may not have intended to support it.
toString
string toString()

Turns the whole element, including tag, attributes, and children, into a string which could be pasted into an XML file.

wrapIn
Element wrapIn(Element what)

Wraps this element inside the given element. It's like this.replaceWith(what); what.appendchild(this);

writeToAppender
string writeToAppender(Appender!string where)

This is the actual implementation used by toString. You can pass it a preallocated buffer to save some time. Returns the string it creates.

Properties

attrs
AttributeSet attrs [@property getter]

Gives dot/opIndex access to attributes

childElements
string childElements [@property setter]

Returns child elements which are of a tag type (excludes text, comments, etc.).

childNodes
const(Element[]) childNodes [@property getter]

Returns the element's children.

childNodes
Element[] childNodes [@property getter]

Mutable version of the same

className
string className [@property getter]

Gets the class attribute's contents. Returns an empty string if it has no class.

className
string className [@property setter]

.

classes
string[] classes [@property getter]

get all the classes on this element

cloned
Element cloned [@property getter]

This is a full clone of the element

computedStyle
CssStyle computedStyle [@property getter]

Don't use this.

dataset
DataSet dataset [@property getter]

HTML5's dataset property. It is an alternate view into attributes with the data- prefix. Given <a data-my-property="cool" />, we get assert(a.dataset.myProperty == "cool");

directText
string directText [@property getter]

Returns the text directly under this element.

directText
string directText [@property setter]

Sets the direct text, without modifying other child nodes.

firstChild
Element firstChild [@property getter]

Returns the first child of this element. If it has no children, returns null. Remember, text nodes are children too.

innerHTML
Appender!string innerHTML [@property setter]

Returns a string containing all child elements, formatted such that it could be pasted into an XML file.

innerHTML
Element innerHTML(string html, bool strict)
Html innerHTML [@property setter]

Takes some html and replaces the element's children with the tree made from the string.

innerRawSource
string innerRawSource [@property setter]

This sets the inner content of the element *without* trying to parse it. You can inject any code in there; this serves as an escape hatch from the dom.

innerText
string innerText [@property getter]

Fetch the inside text, with all tags stripped out.

innerText
string innerText [@property setter]

Sets the inside text, replacing all children. You don't have to worry about entity encoding.

lastChild
Element lastChild [@property getter]
nextSibling
string nextSibling [@property setter]

.

nodeType
int nodeType [@property getter]

.

opDispatch
string opDispatch [@property setter]

Provides easy access to common HTML attributes, object style.

opDispatch
string opDispatch [@property setter]

Old access to attributes. Use attrs instead.

outerHTML
string outerHTML [@property setter]

Replaces this node with the given html string, which is parsed

outerHTML
string outerHTML [@property getter]

Returns all the html for this element, including the tag itself.

outerText
string outerText [@property setter]

Strips this node out of the document, replacing it with the given text

outerText
string outerText [@property getter]

Same result as innerText; the tag with all inner tags stripped out

previousSibling
string previousSibling [@property setter]

.

style
ElementStyle style [@property getter]

Provides both string and object style (like in Javascript) access to the style attribute.

style
string style [@property setter]

This sets the style attribute with a string.

tree
ElementStream tree [@property getter]

Returns a lazy range of all its children, recursively.

Static functions

make
Element make(string tagName, string childInfo, string childInfo2)

Convenience function to try to do the right thing for HTML. This is the main way I create elements.

make
Element make(string tagName, Html innerHtml, string childInfo2)
Undocumented in source. Be warned that the author may not have intended to support it.
make
Element make(string tagName, Element child, string childInfo2)
Undocumented in source. Be warned that the author may not have intended to support it.

Variables

attributes
string[string] attributes;

This is where the attributes are actually stored. You should use getAttribute, setAttribute, and hasAttribute instead.

bubblingEventHandlers
EventHandler[][string] bubblingEventHandlers;
Undocumented in source.
capturingEventHandlers
EventHandler[][string] capturingEventHandlers;
Undocumented in source.
children
Element[] children;
Undocumented in source.
defaultEventHandlers
EventHandler[string] defaultEventHandlers;
Undocumented in source.
expansionHook
void* expansionHook;

These properties are useless in most cases, but if you write a layout engine on top of this lib, they may be good +////ditt

hasLayout
bool hasLayout;

These properties are useless in most cases, but if you write a layout engine on top of this lib, they may be good +////ditt

offsetHeight
int offsetHeight;

These properties are useless in most cases, but if you write a layout engine on top of this lib, they may be good +////ditt

offsetLeft
int offsetLeft;

These properties are useless in most cases, but if you write a layout engine on top of this lib, they may be good +////ditt

offsetParent
Element offsetParent;

These properties are useless in most cases, but if you write a layout engine on top of this lib, they may be good +////ditt

offsetTop
int offsetTop;

These properties are useless in most cases, but if you write a layout engine on top of this lib, they may be good +////ditt

offsetWidth
int offsetWidth;

These properties are useless in most cases, but if you write a layout engine on top of this lib, they may be good +////ditt

parentDocument
Document parentDocument;

Get the parent Document object that contains this element. It may be null, so remember to check for that.

tagName
string tagName;

The name of the tag. Remember, changing this doesn't change the dynamic type of the object.

zIndex
int zIndex;

These properties are useless in most cases, but if you write a layout engine on top of this lib, they may be good +////ditt

Meta