Bug Tracker

Ticket #12647 (closed bug: notabug)

Opened 2 years ago

Last modified 14 months ago

jQuery 1.8 + jQuery UI 1.8.17 = broken outerWidth and outerHeight functions

Reported by: delvarworld@… Owned by:
Priority: undecided Milestone: None
Component: unfiled Version: 1.8.0
Keywords: Cc:
Blocking: Blocked by:

Description

$(document.body).outerWidth() now returns the jQuery object instead of a number.

jQuery 1.8 does not seem to be backwards compatible with jQuery UI.

Change History

comment:1 Changed 2 years ago by anonymous

comment:2 Changed 2 years ago by dmethvin

  • Status changed from new to closed
  • Resolution set to notabug

Use the latest jQuery UI.

comment:3 Changed 2 years ago by delvarworld@…

Update: It's because this line in jQuery UI:

return orig[ "outer" + name ].call( this, size ); is erroneously triggering this condition in jQuery 1.8:

var chainable = arguments.length && ( defaultExtra
typeof margin !== "boolean" ),

because even though size is undefined, the check is for arguments.length. chainable should be false here. You can pass in undefined and it will still make arguments an object with length 1. Someone needs to read up on their JS ;)

comment:4 Changed 2 years ago by anonymous

unfortunately I can't use the latest jQuery ui because of some dependent plugins. I was under the impression jquery is supposed to be backwards compatible. is that not the case?

comment:5 Changed 2 years ago by scott.gonzalez

jQuery is backward compatible. Calling .outerWidth() with undefined has never been a defined API. Can you elaborate on "because of some dependent plugins"? I assume you just updated jQuery core to a new major version, but you're saying that you can't update jQuery UI to a newer patch version.

comment:6 Changed 2 years ago by anonymous

Oh, I see what you're saying. I agree that's not defined, but jQuery UI is (was) doing it.

We are specifically using a timepicker plugin which we've had to customize a bit. If we upgrade jQuery UI the plugin becomes unfunctional. There is a later version of it out, but because of the custom functionality and styling we've put in, we are currently blocked on the upgrade. Upgrading jQuery itself didn't seem to have any adverse affects on it.

I and one other person on stackoverflow have encountered this. Either way, a simple workaround is just to pass in false, which jQuery UI then passes through to the original function.

comment:7 Changed 15 months ago by scott.gonzalez

#14138 is a duplicate of this ticket.

comment:8 Changed 14 months ago by anonymous

 jQuery's API documentation shows the parameter as optional, says "If includeMargin is omitted or false", and gives an example with it omitted. I don't know how it used to be, but it's optional now, so jQuery UI is changing the interface, which should be documented at least.

Note: See TracTickets for help on using tickets.