attr('attribute', undefined) doesn't return jQuery
|Reported by:||pilif||Owned by:|
Calling .attr() or anything else deferring to access() with a second argument of undefined returns undefined instead of jQuery.
typeof($('div').attr('id', undefined)) === 'undefined';
See here: http://jsfiddle.net/tkjXt/
I know that you probably shouldn't set an attribute (or anything else) to undefined, but this is handy when copying attributes from another element:
$('<div>') .attr('id', otherdiv.attr('id')) // if otherdiv doesn't have an id, we blow up here. .attr('class', otherdiv.attr('class'));
This worked correctly before jQuery 1.6 but broke when attr('doesnotexist') began returning undefined.
I would have sent a patch, but attr() then immediately defers to access() which has no way to find out whether attr() was called with one or two parameters, so fixing this would be a huge refactoring effort I definitely don't feel comfortable with.
Change History (3)
comment:1 Changed 5 years ago by timmywil
- Component changed from unfiled to attributes
- Priority changed from undecided to low
- Resolution set to duplicate
- Status changed from new to closed