Bài viết này sẽ giới thiệu sơ lược cách hoạt động của một jQuery plugin và sau bài này có thể tạo ra được plugin cho jQuery phù hợp với chuẩn của cộng đồng và hoàn toàn có thể public cho cộng đồng sử dụng.
Yêu cầu: Hiểu biết cách hoạt động của javascript
Chain Pattern: http://en.wikipedia.org/wiki/Chain-of-responsibility_pattern. Đây là một pattern trong thiết kế phần mềm. Yêu cầu đặt ra là các hàm xử lý sau khi tính toán xong thì kết quả return về chính các tham số được nhận vào. Làm điều này tốt thì chúng ta có thể sử dụng và gọi các hàm xử lý liên tiếp nhau và mã nguồn sẽ dễ đọc hiểu hơn.
jQuery là một bộ thư viện Javascript sử dụng rất tốt Chain Pattern. Ví dụ là để gọi 2 hàm show() và hide() thay vì cách dùng truyền thống là:
$(document).show();
$(document).hide();
thì với jQuery chúng ta có thêm cách sử dụng như sau:
$(document).show().hide();
Đây chính là cách sử dụng dựa vào Chain Pattern, và đây cũng là nguyên tắc cơ bản khi viết một plugin cho jQuery. Phải đảm bảo plugin của chúng ta thỏa mãn yêu cầu này để những người sử dụng plugin của chúng ta có thể linh hoạt trong việc sử dụng.
jQuery lưu các hàm có thể gọi trực tiếp từ selector trong jQuery.fn. Như ví dụ trên thì show và hide là 2 hàm nằm trong jQuery.fn. Khi viết plugin chúng ta cũng tạo các hàm xử lý của chúng ta và gắn vào cho jQuery.fn - Nhớ là phải đảm bảo yêu cầu ở trên (Chain Pattern).
Để thỏa mãn 2 yêu cầu ở trên ta sẽ có cách viết plugin như sau (Đây chỉ là một trong nhiều cách viết - và đa số các plugin hiện tại đều viết theo cách này):
(function ($) {
$.extend($.fn, {
myPlugin: function () {
return this.each(function () {
// Ma nguon cua chung ta tai day
})
}
})
})(jQuery);
myPlugin là tên mà chúng ta người sử dụng sẽ gọi khi muốn xài plugin của chúng ta. Sau đó plugin của chúng ta sẽ được chạy khi được gọi bằng $(selector).myPlugin();
Giải thích:
(function ($) {
})(jQuery);$.extend($.fn, {
}); myPlugin: function () {
}return this.each(function () {
// Ma nguon cua chung ta tai day
})<span id="example1">Ví dụ 1</span>
<p id="example2">Ví dụ 2</p>Ví dụ 1
Ví dụ 2
Mã nguồn của ví dụ trên:
<span id="example1">Ví dụ 1</span>
<p id="example2">Ví dụ 2</p>
<script type="text/javascript">
(function ($) {
$.extend($.fn, {
example: function () {
return this.each(function () {
// This o day chinh la doi tuong chung ta can xu ly
$(this)
// css la ham thay doi thuoc tinh CSS cua doi tuong
.css('background', 'red')
// click la ham gan su kien click cho doi tuong
.click(function () {
alert($(this).html());
})
})
}
})
})(jQuery);
$(document).ready(function () {
$('#example1, #example2').example();
});
</script>
Comments:
We have 0 comment
Post new comment