Fixed bug #178
[jquery.git] / src / jquery / jquery.js
index 69628b3..dca1867 100644 (file)
@@ -587,19 +587,17 @@ jQuery.fn = jQuery.prototype = {
         * and finds the deepest ancestor element within its
         * structure - it is that element that will en-wrap everything else.
         *
+        * This does not work with elements that contain text. Any necessary text
+        * must be added after the wrapping is done.
+        *
         * @example $("p").wrap("<div class='wrap'></div>");
         * @before <p>Test Paragraph.</p>
         * @result <div class='wrap'><p>Test Paragraph.</p></div>
         * 
         * @test var defaultText = 'Try them out:'
         * var result = $('#first').wrap('<div class="red"><span></span></div>').text();
-        * ok( defaultText == result, 'Check for simple wrapping' );
-        * ok( $('#first').parent().parent().is('.red'), 'Check if wrapper div has class "red"' );
-        *
-        * @test var defaultText = 'Try them out:'
-        * var result = $('#first').wrap('<div class="red">xx<span></span>yy</div>').text()
-        * ok( 'xx' + defaultText + 'yy' == result, 'Check for wrapping' );
-        * ok( $('#first').parent().parent().is('.red'), 'Check if wrapper div has class "red"' );
+        * ok( defaultText == result, 'Check for wrapping of on-the-fly html' );
+        * ok( $('#first').parent().parent().is('.red'), 'Check if wrapper has class "red"' );
         *
         * @name wrap
         * @type jQuery
@@ -617,9 +615,17 @@ jQuery.fn = jQuery.prototype = {
         * provided and finding the deepest ancestor element within its
         * structure - it is that element that will en-wrap everything else.
         *
-        * @example $("p").wrap("<div class='wrap'></div>");
-        * @before <p>Test Paragraph.</p>
-        * @result <div class='wrap'><p>Test Paragraph.</p></div>
+        * This does not work with elements that contain text. Any necessary text
+        * must be added after the wrapping is done.
+        *
+        * @example $("p").wrap( document.getElementById('content') );
+        * @before <p>Test Paragraph.</p><div id="content"></div>
+        * @result <div id="content"><p>Test Paragraph.</p></div>
+        *
+        * @test var defaultText = 'Try them out:'
+        * var result = $('#first').wrap(document.getElementById('empty')).parent();
+        * ok( result.is('ol'), 'Check for element wrapping' );
+        * ok( result.text() == defaultText, 'Check for element wrapping' );
         *
         * @name wrap
         * @type jQuery
@@ -1165,7 +1171,7 @@ jQuery.fn = jQuery.prototype = {
                return this.each(function(){
                        var obj = this;
 
-                       if ( table && this.nodeName == "TABLE" && a[0].nodeName != "THEAD" ) {
+                       if ( table && this.nodeName.toUpperCase() == "TABLE" && a[0].nodeName.toUpperCase() != "THEAD" ) {
                                var tbody = this.getElementsByTagName("tbody");
 
                                if ( !tbody.length ) {
@@ -1212,7 +1218,20 @@ jQuery.fn = jQuery.prototype = {
 };
 
 /**
- *
+ * Extends the jQuery object itself. Can be used to add both static
+ * functions and plugin methods.
+ * 
+ * @example $.fn.extend({
+ *   check: function() {
+ *     this.each(function() { this.checked = true; });
+ *   ),
+ *   uncheck: function() {
+ *     this.each(function() { this.checked = false; });
+ *   }
+ * });
+ * $("input[@type=checkbox]").check();
+ * $("input[@type=radio]").uncheck();
+ * @desc Adds two plugin methods.
  *
  * @private
  * @name extend
@@ -1897,15 +1916,17 @@ jQuery.extend({
         */
        sibling: function(elem, pos, not) {
                var elems = [];
-
-               var siblings = elem.parentNode.childNodes;
-               for ( var i = 0; i < siblings.length; i++ ) {
-                       if ( not === true && siblings[i] == elem ) continue;
-
-                       if ( siblings[i].nodeType == 1 )
-                               elems.push( siblings[i] );
-                       if ( siblings[i] == elem )
-                               elems.n = elems.length - 1;
+               
+               if(elem) {
+                       var siblings = elem.parentNode.childNodes;
+                       for ( var i = 0; i < siblings.length; i++ ) {
+                               if ( not === true && siblings[i] == elem ) continue;
+       
+                               if ( siblings[i].nodeType == 1 )
+                                       elems.push( siblings[i] );
+                               if ( siblings[i] == elem )
+                                       elems.n = elems.length - 1;
+                       }
                }
 
                return jQuery.extend( elems, {