diff options
Diffstat (limited to 'src/jqLite.js')
| -rw-r--r-- | src/jqLite.js | 50 | 
1 files changed, 29 insertions, 21 deletions
diff --git a/src/jqLite.js b/src/jqLite.js index cf9d1fa1..4959a2ed 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -165,7 +165,8 @@ function JQLite(element) {      div.innerHTML = '<div> </div>' + element; // IE insanity to make NoScope elements work!      div.removeChild(div.firstChild); // remove the superfluous div      JQLiteAddNodes(this, div.childNodes); -    this.remove(); // detach the elements from the temporary DOM div. +    var fragment = jqLite(document.createDocumentFragment()); +    fragment.append(this); // detach the elements from the temporary DOM div.    } else {      JQLiteAddNodes(this, element);    } @@ -456,24 +457,26 @@ forEach({      }    }, -  text: extend((msie < 9) -      ? function(element, value) { -        if (element.nodeType == 1 /** Element */) { -          if (isUndefined(value)) -            return element.innerText; -          element.innerText = value; -        } else { -          if (isUndefined(value)) -            return element.nodeValue; -          element.nodeValue = value; -        } +  text: (function() { +    var NODE_TYPE_TEXT_PROPERTY = []; +    if (msie < 9) { +      NODE_TYPE_TEXT_PROPERTY[1] = 'innerText';    /** Element **/ +      NODE_TYPE_TEXT_PROPERTY[3] = 'nodeValue';    /** Text **/ +    } else { +      NODE_TYPE_TEXT_PROPERTY[1] =                 /** Element **/ +      NODE_TYPE_TEXT_PROPERTY[3] = 'textContent';  /** Text **/ +    } +    getText.$dv = ''; +    return getText; + +    function getText(element, value) { +      var textProp = NODE_TYPE_TEXT_PROPERTY[element.nodeType] +      if (isUndefined(value)) { +        return textProp ? element[textProp] : '';        } -      : function(element, value) { -        if (isUndefined(value)) { -          return element.textContent; -        } -        element.textContent = value; -      }, {$dv:''}), +      element[textProp] = value; +    } +  })(),    val: function(element, value) {      if (isUndefined(value)) { @@ -518,8 +521,14 @@ forEach({          return this;        } else {          // we are a read, so read the first child. -        if (this.length) -          return fn(this[0], arg1, arg2); +        var value = fn.$dv; +        // Only if we have $dv do we iterate over all, otherwise it is just the first element. +        var jj = value == undefined ? Math.min(this.length, 1) : this.length; +        for (var j = 0; j < jj; j++) { +          var nodeValue = fn(this[j], arg1, arg2); +          value = value ? value + nodeValue : nodeValue; +        } +        return value;        }      } else {        // we are a write, so apply to all children @@ -529,7 +538,6 @@ forEach({        // return self for chaining        return this;      } -    return fn.$dv;    };  });  | 
