2012-10-03 7 views
13

Esta es una re-do de una pregunta que fue cerrado erróneamente: jQuery 1.8 outer Height/Width not workingjQuery 1.8.2 + no corriente jQuery UI = outerWidth y outerHeight roto

Estoy golpeando la misma cuestión. outerWidth y outerHeight y ahora devuelve el objeto jQuery en lugar de números.

Estamos utilizando jQuery UI 1.8.17, publicado el 10 de enero de 2012. No es una versión muy antigua, así que tengo la sensación de que otras personas verán esto. Estamos bloqueados en esta versión debido a algunos plugins de jQuery ui terribles, por lo que actualizar no es actualmente una opción.

Si encuentro una solución, responderé a esta pregunta.

Aquí es un violín que demuestra el problema http://jsfiddle.net/delvarworld/yxDHu/ (versión jQuery UI añadió en "gestionar los recursos")

Actualización: Es porque esta línea en jQuery UI:

return orig[ "outer" + name ].call(this, size); 

está provocando erróneamente esta condición en jQuery 1.8.2:

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

porque a pesar de size no está definido, el cheque es para arguments.length. encadenable debe ser falso aquí. Puede pasar indefinido y todavía hará que los argumentos sean un objeto con longitud 1. Alguien tiene que leer en su JS;)

+1

Bug abrió: http://bugs.jquery.com/ticket/12647 –

+0

1 para la reapertura de la cuestión. de acuerdo con http://api.jquery.com/outerHeight/ 'includeMargin' es un parámetro opcional, pero si no se establece en verdadero/falso, aún así (jquery 1.8.3) devuelve el elemento. – roberkules

Respuesta

8

Una solución sencilla parece estar de paso en false

$(document.body).outerWidth(false); 

O cierto si usted quiere los márgenes, pero si pasaras en verdad, parece que no tendrías ganas ntered este error.

+0

Esto parece una solución cruda.Tendría que modificar cada llamada outerWidth/outerHeight en cada plugin jQueryUI para pasar el falso cuando verdadero no está allí. El verdadero problema es que los métodos reemplazados de jQueryUI no están diseñados lo suficientemente bien (a partir de la versión de OP). Por lo tanto, la solución adecuada debería modificar la extensión de jQueryUI con una lógica más inteligente: corrige el problema en lugar de sus síntomas. – Tom

2

Sugiero actualizar sus paquetes de interfaz de usuario jQuery y jQuery. 1.8.1 y 1.8.2 en particular, problemas de direcciones relacionados con outerWidth/outerHeight, y jQuery UI, por supuesto, debe mantenerse sincronizado.

Ver los registros de cambios en los anuncios de referencia:

http://blog.jquery.com/

http://blog.jqueryui.com/

+0

no se puede actualizar según la pregunta. como se supone que jquery es compatible con versiones anteriores, este es un problema –

+0

Si lee el blog, jquery 1.8 tuvo problemas con outerWidth/outerHeight. http://blog.jquery.com/2012/08/30/jquery-1-8-1-released/ Intenta actualizar jquery a 1.8.2 y ver si eso ayuda. – Joshua

+0

estamos usando 1.8.2 :(pregunta actualizada –

6

Parece que es un problema de jqueryUI. Parece que se ha solucionado en 1.8.22.

With jquery UI 1.8.21:http://jsfiddle.net/yVq5H/13/

With jquery UI 1.8.22 (fixed):http://jsfiddle.net/yVq5H/14/

+1

Tuve el problema con jQuery 1.8.2 y jQuery UI 1.8.17, lo que provocó que el control deslizante Foundation Orbit no se deslizara. Me tomó un tiempo descubrir que outerWidth() se rompió: una actualización a la última jQuery UI 1.10.0 solucionó este problema. – rkallensee

+0

De acuerdo. A través de http://bugs.jquery.com/ticket/12293: "Actualice jqueryUI a 1.8.22, ya que es el que es compatible con jQuery 1.8" –

+0

Estoy de acuerdo con rkallensee - esto ha sido un gran dolor para diagnosticar . – Tom