2012-10-03 31 views
13

Đây là một tái làm của một câu hỏi mà đã được đóng sai lầm: jQuery 1.8 outer Height/Width not workingjQuery 1.8.2 + noncurrent jQuery UI = outerWidth và outerHeight chia

Tôi đang đánh cùng một vấn đề. outerWidthouterHeight và hiện trả về đối tượng jQuery thay vì số.

Chúng tôi đang sử dụng jQuery UI 1.8.17, phát hành ngày 10 tháng 1 năm 2012. Đây không phải là phiên bản cũ nên tôi có cảm giác người khác sẽ thấy điều này. Chúng tôi bị khóa vào phiên bản này vì một số plugin jQuery ui khủng khiếp, vì vậy việc nâng cấp hiện không phải là một tùy chọn.

Nếu tôi tìm thấy giải pháp, tôi sẽ trả lời câu hỏi này.

Dưới đây là một fiddle chứng minh vấn đề http://jsfiddle.net/delvarworld/yxDHu/ (jQuery UI phiên bản được thêm vào trong "quản lý tài nguyên")

Cập nhật: Đó là bởi vì dòng này trong jQuery UI:

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

được sai lầm gây ra tình trạng này trong jQuery 1.8.2:

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

bởi vì mặc dù size là undefined, việc kiểm tra là cho arguments.length. chainable nên sai ở đây. Bạn có thể vượt qua trong không xác định và nó vẫn sẽ làm cho đối số một đối tượng với chiều dài 1. Ai đó cần phải đọc trên JS của họ;)

+1

Bug mở: http://bugs.jquery.com/ticket/12647 –

+0

1 cho mở lại câu hỏi. theo http://api.jquery.com/outerHeight/ 'includeMargin' là một tham số tùy chọn, nhưng nếu không được đặt thành true/false thì nó vẫn (jquery 1.8.3) trả về phần tử. – roberkules

Trả lời

8

Một giải pháp đơn giản dường như chỉ đi trong false

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

Hoặc, đúng nếu bạn muốn lợi nhuận, nhưng nếu bạn đang đi đúng, có vẻ như bạn sẽ không có điểm ntered lỗi này.

+0

Điều này có vẻ giống như một giải pháp thô.Tôi sẽ phải sửa đổi mọi cuộc gọi outerWidth/outerHeight trong mọi plugin jQueryUI duy nhất để chuyển sai khi đúng không có ở đó. Vấn đề thực sự là các phương thức ghi đè của jQueryUI không được thiết kế đủ tốt (như phiên bản của OP). Vì vậy, các giải pháp thích hợp nên sửa đổi phần mở rộng của jQueryUI với logic thông minh hơn - sửa chữa vấn đề thay vì các triệu chứng của nó. – Tom

2

Tôi đề nghị nâng cấp cả hai gói jQuery và jQuery UI của bạn. 1.8.1 và 1.8.2 trong các vấn đề địa chỉ cụ thể liên quan đến outerWidth/outerHeight, và jQuery UI của khóa học cần được giữ đồng bộ.

Xem ghi thay đổi trên thông báo để tham khảo:

http://blog.jquery.com/

http://blog.jqueryui.com/

+0

không thể nâng cấp theo câu hỏi. như jquery được cho là tương thích ngược, đây là vấn đề –

+0

Nếu bạn đọc blog - jquery 1.8 có vấn đề với outerWidth/outerHeight. http://blog.jquery.com/2012/08/30/jquery-1-8-1-released/ Hãy thử nâng cấp bản thân jquery lên 1.8.2 và xem liệu điều đó có hữu ích không. – Joshua

+0

chúng tôi đang sử dụng 1.8.2 :(câu hỏi cập nhật –

6

Có vẻ như đó là vấn đề jqueryUI. Dường như được cố định trong 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

Tôi gặp sự cố với jQuery 1.8.2 và jQuery UI 1.8.17 - khiến thanh trượt Foundation Orbit không trượt. Đã cho tôi một thời gian để tìm ra outerWidth() đã bị hỏng - một bản nâng cấp lên jQuery UI 1.10.0 mới nhất đã khắc phục vấn đề này. – rkallensee

+0

Đồng ý. Qua http://bugs.jquery.com/ticket/12293: "Vui lòng nâng cấp jqueryUI lên 1.8.22, vì đó là phiên bản tương thích với jQuery 1.8" –

+0

Tôi đồng ý với rkallensee - đây là một nỗi đau lớn để chẩn đoán . – Tom