EDIT: Như đã chỉ ra bởi Seb, đây không phải là đúng một ví dụ về 'mở rộng' một plugin, thêm 'đóng gói' một plugin, để mất nó vì nó đi kèm :)
Dưới đây là một cái gì đó tôi đã làm để đơn giản hóa việc sử dụng số điện thoại jquery autocomplete plugin của tôi cách đây một thời gian:
// small autocomplete plugin wrapping the full autocomplete plugin for a standard look and feel
(function($) {
$.fn.standardAutocomplete = function(type) {
return this.autocomplete(ToAbsoluteUrl("~/System/Autocomplete/" + type), {
formatItem: formatItem,
formatResult: formatResult
});
// Autocomplete formatting callbacks
function formatItem(row) { return row[0] + "<span class=\"sub\">" + row[1] + "</span>"; }
function formatResult(row) { return row[0].replace(/(<.+?>)/gi, ''); }
}
})(jQuery);
Hiện tại không thực hiện theo "thực hành mã hóa jquery" - ví dụ: Tôi không tính toán thực tế có thể có nhiều yếu tố được chọn, nhưng trong trường hợp này, tôi biết tôi sẽ không bao giờ chọn nhiều hơn một phần tử trên một trang với điều này vì vậy tôi muốn đơn giản và nó "hoạt động cho tôi". Bạn có thể sử dụng một cách tiếp cận tương tự, có lẽ với một chút tinh tế hơn.
Nguồn
2009-04-16 19:27:53
Thực ra, tôi đã xem xét phương pháp đó, vì nó cảm thấy ít bẩn hơn việc sao chép và dán. Bạn sẽ tha thứ cho tôi nếu tôi đưa ra câu trả lời 'bởi cuốn sách' một lúc trước khi đánh dấu câu trả lời của bạn là câu trả lời? :) –
Tất nhiên, không có vấn đề gì :) –
Đây là trình bao bọc, nó không mở rộng bất kỳ lớp hay đối tượng nào. Bạn đang thực tế tạo một plugin mới _uses_ khác, nhưng không có bất kỳ phương pháp nào khác của plugin cũng như các tùy chọn - trong trường hợp đó, bạn đang mở rộng bất kỳ thứ gì. – Seb