From b603ca03c460bad9d8cf367ddc0f18ef46a2ef2d Mon Sep 17 00:00:00 2001 From: John Resig Date: Mon, 8 Jan 2007 01:12:21 +0000 Subject: [PATCH] I broke out the ${...} functionality into a separate plugin so that we can develop it further. I left a hook in jquery.js so that this can be done, plus I left in the function() functionality. --- src/jquery/jquery.js | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index c6f2a9b8..50549bb1 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -439,17 +439,15 @@ jQuery.fn = jQuery.prototype = { for ( var prop in key ) jQuery.attr( type ? this.style : this, - prop, jQuery.parseSetter(key[prop]) + prop, jQuery.prop(this, prop, key[prop], type) ); // See if we're setting a single key/value style - else { - // convert ${this.property} to function returnung that property + else jQuery.attr( type ? this.style : this, - key, jQuery.parseSetter(value) + key, jQuery.prop(this, key, value, type) ); - } }) : // Look for the case where we're accessing a style value @@ -1233,6 +1231,12 @@ jQuery.extend({ if ( fn.apply( obj[i], args || [i, obj[i]] ) === false ) break; return obj; }, + + prop: function(elem, key, value){ + // Handle executable functions + return value.constructor == Function && + value.call( elem, val ) || value; + }, className: { add: function( elem, c ){ @@ -1399,16 +1403,6 @@ jQuery.extend({ return r; }, - parseSetter: function(value) { - if( typeof value == "string" && value.charAt(0) == "$" ) { - var m = value.match(/{(.*)}$/); - if ( m && m[1] ) { - value = new Function( "return " + m[1] ); - } - } - return value; - }, - attr: function(elem, name, value){ var fix = { "for": "htmlFor", @@ -1424,11 +1418,6 @@ jQuery.extend({ selected: "selected" }; - // get value if a function is provided - if ( value && typeof value == "function" ) { - value = value.apply( elem ); - } - // IE actually uses filters for opacity ... elem is actually elem.style if ( name == "opacity" && jQuery.browser.msie && value != undefined ) { // IE has trouble with opacity if it does not have layout