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 === 0 ? 0 : (ret | undefined);
} else
return undefined;
Attachments
Change History
Download in other formats:
| |