2010-10-20 34 views
7

Một số plugin jquery mở rộng sử dụng phương thức _create, trong khi một số khác sử dụng phương thức _init, ai đó có thể giải thích sự khác biệt giữa hai?tiện ích jquery, _create hoặc _init

Ngoài ra bất kỳ hướng dẫn nào về thời điểm mở rộng tiện ích hoặc mở rộng trực tiếp jquery.fn thì sao?

Trả lời

4

Nhược điểm để mở rộng tiện ích (ngược với $ .fn) là bạn tạo phụ thuộc vào jquery-ui định nghĩa widget "class". Sự phụ thuộc đó có thể tốn kém cho người dùng plugin của bạn mà cũng không sử dụng jquery-ui.

Theo như _create vs _init, tôi chắc chắn rằng _init đến trước và sau đó trong bản sửa đổi gần đây mà họ đã giới thiệu và ưu tiên _create. Tôi có thể sai về điều này, nhưng tôi tin rằng _init vẫn được hỗ trợ. Nếu nó là sau đó không nên có bất kỳ sự khác biệt giữa hai.

+0

Điểm tốt trên tiện ích. Bạn có bất kỳ thay thế phụ tùng nếu tôi không muốn giới thiệu thêm phụ thuộc vào jqueryui? –

+2

Bạn có thể trích xuất mã tiện ích và đưa nó vào tệp .js của mình. Đã có nói về việc di chuyển widget vào jquery chính nó thay vì jqueryui nhưng tôi không biết nếu đó là dự kiến ​​cho một bản phát hành cụ thể hay chưa. –

+4

Có sự khác nhau giữa _init và _create. _create được gọi chỉ một lần. _init sẽ được gọi là nhiều thời gian như được đề cập từ @fudgey – jsgoupil

18

Từ jQuery UI Developer Guide:

Khi nguyên tố này được tạo ra, tất cả các cuộc gọi khác đến tên phụ tùng nơi tham số đầu tiên không phải là một chuỗi sẽ gọi phương thức _init(); nếu lựa chọn được thông qua, phương pháp .option() sẽ được gọi trước khi phương pháp _init()

+0

Thật không may, liên kết bây giờ là bánh mì nướng. –

+1

[Hãy thử liên kết này tới api] (https://api.jqueryui.com/jquery.widget/#method-_init) hoặc [bài đăng trên blog này] (http://www.erichynds.com/blog/tips- cho-phát triển-jquery-ui-widget) – Mottie

3

Một widget có ba giai đoạn:

+-------+----------------+---------------+--------------------------------------------------------------------------------------------+ 
| Phase | Name   | jQuery Method | Description           | 
+-------+----------------+---------------+--------------------------------------------------------------------------------------------+ 
|  1 | Creation  | _create  | First time the widget is applied to an element, it is called.        | 
|  2 | Initialization | _int   | The _init method is called after _create when the widget is first applied to its elements. | 
|  3 | Destruction | destroy  | The widget's destroy method is used to detach a widget from an element.     | 
+-------+----------------+---------------+--------------------------------------------------------------------------------------------+ 

LƯU Ý: Tên phương pháp bắt đầu với một dấu gạch dưới có nghĩa là được tư nhân theo quy ước.


Vì vậy, có sự khác biệt giữa _create_init. Một được sử dụng để tạo và cái còn lại được sử dụng để khởi tạo. Mỗi lần bạn gọi tiện ích không có đối số hoặc với các tùy chọn, nó sẽ gián tiếp gọi phương thức _init. Do đó, điều này có thể được sử dụng để đặt lại (khởi tạo lại) một tiện ích hoặc chuyển các tùy chọn khác.

Thông tin chi tiết về từng giai đoạn here.

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