jQuery: The Write Less, Do More JavaScript Library

Ticket #2453 (closed bug: fixed)

Opened 5 months ago

Last modified 3 months ago

attr(...) function returns undefined when value is 0

Reported by: gtong Assigned to: anonymous
Type: bug Priority: major
Milestone: 1.2.4 Component: core
Version: 1.2.3 Keywords:
Cc: Needs: Review

Description

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

Changed 3 months ago by flesler

  • status changed from new to closed
  • resolution set to fixed

Fixed at [5574], check #2548.

Note: See TracTickets for help on using tickets.