var parseXML = function(xml) {
return $(xml)[0];
-}
+};
var Document = function(nativeNode) {
var $document = $(nativeNode);
- Object.defineProperty(this, 'root', {get: function() { return new ElementNode($document[0])}});
-}
+ Object.defineProperty(this, 'root', {get: function() { return new ElementNode($document[0]);}});
+};
var DocumentNode = function(nativeNode) {
this.nativeNode = nativeNode;
this._$ = $(nativeNode);
-}
+};
$.extend(DocumentNode.prototype, {
detach: function() { this._$.detach(); },
sameNode: function(otherNode) {
return this.nativeNode === otherNode.nativeNode;
- }
-})
+ },
+
+ parent: function() {
+ return this.nativeNode.parentNode ? new ElementNode(this.nativeNode.parentNode) : null;
+ },
+
+ before: function(node) {
+ this._$.before(node.nativeNode);
+ },
+
+ wrapWith: function(node) {
+ if(this.parent())
+ this.before(node);
+ node.append(this);
+ },
+});
var ElementNode = function(nativeNode) {
DocumentNode.apply(this, arguments);
return this.nativeNode.tagName.toLowerCase();
},
- append: function(documentNode) {
- this._$.append(documentNode.nativeNode);
- },
-
- before: function(node) {
- this._$.before(node.nativeNode);
- },
-
contents: function() {
var toret = [];
this._$.contents().each(function() {
return this._$.contents().index(node._$);
},
- parent: function() {
- return new ElementNode(this._$.parent());
+ getAttr: function(name) {
+ return this._$.attr(name);
+ },
+
+ setAttr: function(name, value) {
+ this._$.attr(name, value);
+ },
+
+ append: function(documentNode) {
+ this._$.append(documentNode.nativeNode);
},
unwrapContent: function() {
var TextNode = function(nativeNode) {
DocumentNode.apply(this, arguments);
-}
+};
$.extend(TextNode.prototype, DocumentNode.prototype, {
nodeType: Node.TEXT_NODE,
prependText: function(text) {
this.nativeNode.data = text + this.nativeNode.data;
}
-})
+});
return {