Side navigation
#5302 closed bug (wontfix)
Opened September 28, 2009 01:28PM UTC
Closed September 28, 2009 02:50PM UTC
Last modified November 13, 2009 07:22PM UTC
$.each fails on certain objects containing a property-key "length"
Reported by: | Marc Jansen | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 1.4 |
Component: | core | Version: | 1.3.2 |
Keywords: | Cc: | Marc, Jansen | |
Blocked by: | Blocking: |
Description
when $.each is called with an object, that has an attribute named length, it does not iterate over the object:
var humpty = { 'length' : 'foobar' }; $.each(humpty, function (i, n) { alert('$.each: ' + i); });
Using the traditional for-in-way it works:
for( objKey in humpty ) { alert('for in: ' + objKey); }
In the function it is only tested whether length is not equal to undefined.
The function should check the nature of the object to iterate over differently:
// perhaps:
iterObj.constructor === Object
iterObj.constructor === Array
Attachments (0)
Change History (3)
Changed September 28, 2009 01:31PM UTC by comment:1
Changed September 28, 2009 02:50PM UTC by comment:2
cc: | → Marc, Jansen |
---|---|
component: | unfilled → core |
resolution: | → wontfix |
status: | new → closed |
This is the desired behavior.
You can always write your iterator function that works differently.
Changed November 13, 2009 07:22PM UTC by comment:3
I really don't see why this would be desired behavior. Just in case this is reopened some day, this is my patch:
http://github.com/steadicat/jquery/commit/8d7948ad5417695af41d8be9851a4f85021a7b3c
Sorry, the last line should read