Tôi chỉ mới bắt đầu với việc viết các plugin jQuery. Tôi đã viết ba plugin nhỏ nhưng tôi chỉ đơn giản là sao chép dòng vào tất cả các plugin mà không thực sự biết ý nghĩa của nó. Ai đó có thể cho tôi biết thêm một chút về những điều này? Có lẽ một lời giải thích sẽ có ích vào một ngày nào đó khi viết một khung :)
Cái này làm gì (Tôi biết nó mở rộng jQuery bằng cách nào đó nhưng có gì thú vị khác để biết về điều này)
(function($) {
})(jQuery);
Sự khác biệt giữa hai cách viết plugin sau đây là gì:
Loại 1:
(function($) {
$.fn.jPluginName = {
},
$.fn.jPluginName.defaults = {
}
})(jQuery);
Loại 2:
(function($) {
$.jPluginName = {
}
})(jQuery);
Loại 3:
(function($){
//Attach this new method to jQuery
$.fn.extend({
var defaults = {
}
var options = $.extend(defaults, options);
//This is where you write your plugin's name
pluginname: function() {
//Iterate over the current set of matched elements
return this.each(function() {
//code to be inserted here
});
}
});
})(jQuery);
Tôi có thể rời khỏi đây và có lẽ tất cả đều có nghĩa tương tự. Tôi bị bối rối. Trong một số trường hợp, điều này dường như không hoạt động trong một plugin mà tôi đang viết bằng Loại 1. Cho đến nay, Loại 3 có vẻ thanh lịch nhất đối với tôi nhưng tôi cũng muốn biết về những người khác.
(function($) { })(jQuery)
bạn đã nói: "Tôi biết nó mở rộng jQuery bằng cách nào đó [...]". Rõ ràng bạn không biết vì tuyên bố của bạn là sai 100%. Bằng cách này, nó có thể gây hiểu lầm cho độc giả tương lai. Hãy xem cái này: stackoverflow.com/a/32550649/1636522 .
(function($) { })(jQuery);
kết thúc tốt đẹp mã để$
làjQuery
bên trong đóng cửa đó, ngay cả khi$
phương tiện cái gì khác bên ngoài của nó, thường là kết quả của$.noConflict()
ví dụ. Điều này đảm bảo plugin của bạn hoạt động, dù có hay không$ === jQuery
:)