Bug with jQuery attr

Bug with jQuery attr


The jQuery attribute function returns undefined if the value of the
attribute is 0. The HTML code below returns undefined if you select
"Foo", but 1 if you select "Bar"
<select id="foo" onChange="alert($('#foo').attr('selectedIndex'))">
<option value="Foo">Foo</option>
<option value="Bar" selected>Bar</option>
</select>
This is because of the following line (in jQuery 1.2.3 line # 178)
return this.length && jQuery[ type || "attr" ]( this[0], name ) ||
undefined;
The problem here is that the return value of the attr call is 0, which
is evaluated as false, and thus passes to the || and returns
undefined.
one possible way to fix this is:
if ( this.length ){
var ret = jQuery[ type || "attr" ]( this[0],
name );
return ret == null ? undefined : ret;
} else
return undefined;