Added $().data(), $().removeData(), and .bind("click!"). .data() and .removeData...
[jquery.git] / src / core.js
index 4cb0a22..f36edef 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * jQuery @VERSION - New Wave Javascript
  *
- * Copyright (c) 2007 John Resig (jquery.com)
+ * Copyright (c) 2008 John Resig (jquery.com)
  * Dual licensed under the MIT (MIT-LICENSE.txt)
  * and GPL (GPL-LICENSE.txt) licenses.
  *
@@ -477,6 +477,26 @@ jQuery.fn = jQuery.prototype = {
        andSelf: function() {
                return this.add( this.prevObject );
        },
+
+       data: function( key, value ){
+               if ( value == null ) {
+                       if ( this.length ) {
+                               var data = jQuery.data( this[0], key );
+                               return data == null ?
+                                       jQuery.data( this[0], key.split(".")[0] ) :
+                                       data;
+                       }
+               } else
+                       return this.trigger("set-" + key + "!", [value]).each(function(){
+                               jQuery.data( this, key, value );
+                       });
+       },
+
+       removeData: function( key ){
+               return this.each(function(){
+                       jQuery.removeData( this, key );
+               });
+       },
        
        domManip: function( args, table, reverse, callback ) {
                var clone = this.length > 1, elems; 
@@ -1153,11 +1173,6 @@ jQuery.extend({
        },
 
        grep: function( elems, callback, inv ) {
-               // If a string is passed in for the function, make a function
-               // for it (a handy shortcut)
-               if ( typeof callback == "string" )
-                       callback = eval("false||function(a,i){return " + callback + "}");
-
                var ret = [];
 
                // Go through the array, only saving the items
@@ -1230,18 +1245,16 @@ jQuery.extend({
 });
 
 jQuery.each({
-       parent: "elem.parentNode",
-       parents: "jQuery.dir(elem,'parentNode')",
-       next: "jQuery.nth(elem,2,'nextSibling')",
-       prev: "jQuery.nth(elem,2,'previousSibling')",
-       nextAll: "jQuery.dir(elem,'nextSibling')",
-       prevAll: "jQuery.dir(elem,'previousSibling')",
-       siblings: "jQuery.sibling(elem.parentNode.firstChild,elem)",
-       children: "jQuery.sibling(elem.firstChild)",
-       contents: "jQuery.nodeName(elem,'iframe')?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes)"
+       parent: function(elem){return elem.parentNode;},
+       parents: function(elem){return jQuery.dir(elem,"parentNode");},
+       next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
+       prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
+       nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
+       prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
+       siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
+       children: function(elem){return jQuery.sibling(elem.firstChild);},
+       contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
 }, function(name, fn){
-       fn = eval("false||function(elem){return " + fn + "}");
-
        jQuery.fn[ name ] = function( selector ) {
                var ret = jQuery.map( this, fn );