From c8b7881c738f6949095029d75d847acc98b0afbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Tue, 16 Jan 2007 09:18:21 +0000 Subject: [PATCH] Enhanced attr(String, Function) to pass through index of current element --- src/jquery/coreTest.js | 3 ++- src/jquery/jquery.js | 14 ++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/jquery/coreTest.js b/src/jquery/coreTest.js index f736d4d70..5dd9d8058 100644 --- a/src/jquery/coreTest.js +++ b/src/jquery/coreTest.js @@ -82,8 +82,9 @@ test("attr(String)", function() { }); test("attr(String, Function)", function() { - expect(1); + expect(2); ok( $('#text1').attr('value', function() { return this.id })[0].value == "text1", "Set value from id" ); + ok( $('#text1').attr('title', function(i) { return i }).attr('title') == "0", "Set value with an index"); }); test("attr(Hash)", function() { diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index e46fc7386..f986d28f8 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -411,10 +411,16 @@ jQuery.fn = jQuery.prototype = { * @result * @desc Sets title attribute from src attribute. * + * @example $("img").attr("title", function(index) { return this.title + (i + 1); }); + * @before + * @result + * @desc Enumerate title attribute. + * * @name attr * @type jQuery * @param String key The name of the property to set. * @param Function value A function returning the value to set. + * Scope: Current element, argument: Index of current element * @cat DOM/Attributes */ attr: function( key, value, type ) { @@ -430,12 +436,12 @@ jQuery.fn = jQuery.prototype = { } // Check to see if we're setting style values - return this.each(function(){ + return this.each(function(index){ // Set all the styles for ( var prop in obj ) jQuery.attr( type ? this.style : this, - prop, jQuery.prop(this, obj[prop], type) + prop, jQuery.prop(this, obj[prop], type, index) ); }); }, @@ -1256,10 +1262,10 @@ jQuery.extend({ return obj; }, - prop: function(elem, value, type){ + prop: function(elem, value, type, index){ // Handle executable functions if ( jQuery.isFunction( value ) ) - return value.call( elem ); + return value.call( elem, [index] ); // Handle passing in a number to a CSS property if ( value.constructor == Number && type == "curCSS" )