2008-12-24 37 views
6

Tôi đang cố gắng xây dựng một trang trên trang web cá nhân của mình, cả hai đều đã sử dụng jQuery và triển khai Facebook Connect.Kết nối Facebook, jQuery UI và jQuery.noConflict()

Thật không may, Facebook client API sử dụng $ token, có nghĩa là tôi phải gọi jQuery.noConflict()

đúp không may, tôi đã phát hiện ra rằng đối với một số lý do điên và as Rick Strahl points out, jQuery UI doesn't respect noConlict(). At all. Trong thực tế, nếu bạn nhìn vào mã nguồn, có $ s trên tất cả.

tôi thực sự muốn để có thể sử dụng jQuery UI - đặc biệt, các dialog() thành phần, và draggable sẽ thực sự thoải mái cũng - nhưng tôi thậm chí nhiều hơn như vậy, tôi không muốn phải tay chỉnh sửa - và kiểm tra và bảo trì - bản sao của riêng tôi về bất kỳ phần nào của giao diện người dùng jQuery.

Đây là lần gần đây nhất trong một loạt các yaks I've had to shave trong đó có tôi ở cuối trí thông minh của tôi. Bất kỳ đề xuất? Cứu giúp!

+0

Phiên bản nào của API Facebook Connect bạn đang sử dụng? Tôi chỉ cần tải về nó và có vẻ như nó đang sử dụng FB, không phải là $ trong suốt. Có lẽ tôi đang thiếu một cái gì đó, mặc dù ... – tvanfosson

+0

Không chắc chắn những gì bạn có nghĩa là ... Tôi chỉ cần theo tài liệu của họ để thực hiện. Trước khi tôi bắt đầu sử dụng noConflict(), tôi đã nhận được phương pháp lạ/đối tượng không tồn tại lỗi từ các công cụ Facebook. Tuy nhiên, đừng nhớ những lỗi thực sự là gì. –

Trả lời

18

Bài đăng bạn đã tham chiếu khá cũ và lỗi thời. Bản phát hành 1.0 của jQuery UI gặp sự cố này trong một vài tệp và đã được khắc phục ngay sau khi được báo cáo.

Tất cả giao diện người dùng jQuery được gói trong một closure chuyển vào jQuery dưới dạng $ và do đó có thể sử dụng $ nội bộ trong khi $ được sử dụng cho một thứ khác bên ngoài.

Từ http://docs.jquery.com/Using_jQuery_with_Other_Libraries#Referencing_Magic_-_Shortcuts_for_jQuery

Sử dụng các kỹ thuật sau đây, mà cho phép bạn sử dụng $ bên trong một khối mã mà không vĩnh viễn ghi đè lên $:

(function($) { 
    /* some code that uses $ */ 
})(jQuery) 

Lưu ý: Nếu bạn sử dụng kỹ thuật này, bạn vẫn có thể sử dụng Prototype qua window.$ ví dụ: window.$('some_element_id'). Bất kỳ hàm nào bên ngoài đóng của bạn tham chiếu $ sẽ gọi Nguyên mẫu, ngay cả khi được gọi từ bên trong đóng của bạn.

Đây là lý do tại sao bạn sẽ thấy $ bên trong các tập tin jQuery UI, nhưng yên tâm, bất kỳ phiên bản gần đây của jQuery UI (1.5+) là hoàn toàn ủng hộ với jQuery.noConflict()

+0

Cảm ơn @rdworth, nó cũng giúp tôi. –

Các vấn đề liên quan