2011-01-12 43 views
6

Tôi hiểu rằng bạn có thể tạo một plugin với giá trị mặc định nào như thế này:Thay đổi mặc định của một Plugin

(function($){ 
$.fn.hilight = function(options) { 
    var opts = $.extend({}, $.fn.hilight.defaults, options); 
    this.css(opts); 
}; 
$.fn.hilight.defaults = { 
    foreground: 'red' 
}; 
})(jQuery); 

Và sau đó tôi có thể thay đổi giá trị mặc định từ bên ngoài bằng cách:

$.fn.hilight.defaults.foreground='blue'; 

Câu hỏi của tôi (s) là làm thế nào có thể này được thực hiện với $ .fn.extend() cú pháp:

(function($){ 
    $.fn.extend({ 
    hililght: function(options){ 
     var defaults={foreground: 'red',} 
     var opt=$.extend(defaults,options); 
     } 
    }); 
})(jQuery) 

Và làm thế nào tôi có thể thay đổi nhiều giá trị mặc định?

Trả lời

5

Bạn thể làm điều này:

(function($){ 
    $.fn.extend({ 
    hilight: function(options){ 
     var opt=$.extend(defaults,options); 
    } 
    }); 
    $.extend($.fn.hilight, {defaults: { 
     foreground: 'red' 
    }}); 
})(jQuery) 

Nhưng không có nhiều điểm. $.fn.extend chỉ hữu ích khi bạn có nhiều thuộc tính để mở rộng, nhưng bạn chỉ có hilight. Dính vào ví dụ đầu tiên của bạn, nó dễ đọc hơn và (hơi) hiệu quả hơn.

Chức năng extend của jQuery có ích cho câu hỏi thứ hai của bạn, về việc thay đổi nhiều giá trị mặc định. Đây là những gì extend đã được thiết kế thực sự cho:

$.extend($.fn.hilight.defaults, { 
    foreground: "red", 
    background: "yellow", 
    height: 100 
    // and so on... 
}); 
+0

Tôi sẽ sử dụng nhiều hàm bên trong $ .fn.extend() để nó có hiệu quả. Cảm ơn bit thứ hai của mã. – Theopile

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