Cơ bản về jQuery

jQuery là một Framework được xây dựng dựa trên các tính năng của JavaScript. Vì thế trong khi phát triển các ứng dụng sử dụng jQuery, bạn có thể sử dụng tất cả các hàm và các tính năng khác được bổ trợ trong JavaScript.

Bài viết này sẽ giải thích những khái niệm cơ bản thường được sử dụng trong jQuery như: chuỗi (string), số (number), Boolean, mảng (array), hàm, tham số, context,...

Đối tượng string trong jQuery

Một chuỗi trong JavaScript là một đối tượng không đổi chứa 0, 1 hoặc nhiều ký tự.

Sau đây là một ví dụ hợp lệ về một string trong JavaScript.

"Đây là một chuỗi JavaScript"
'Đây là một chuỗi JavaScript'
'Đây "thực sự" là một chuỗi JavaScript'
"Đây 'thực sự'là một chuỗi JavaScript"

Đối tượng number trong jQuery

Đối tượng number trong JavaScript là các giá trị theo chuẩn IEEE 754 định dạng độ chính xác kép (64 bit). Chúng là không đổi, như đối tượng string.

Sau đây là ví dụ hợp lệ về một số trong JavaScript.

5350
120.27
0.26

Đối tượng Boolean trong jQuery

Một Boolean trong JavaScript có thể nhận giá trị true hoặc false. Nếu một số là 0, thì mặc định của nó là false. Nếu một chuỗi là trống, thì mặc định là false.

Dưới đây là những ví dụ hợp lệ về Boolean trong JavaScript.

true     // true
false // false
0 // false
1 // true
"" // false
"hello" // true

Đối tượng Object trong jQuery

JavaScript hỗ trợ tốt khái niệm Object. Bạn có thể tạo một Object bởi sử dụng Object Literal như sau:

var emp = {
name: "Zara",
age: 10
};

Bạn có thể viết và đọc các thuộc tính của một Object bởi sử dụng ký hiệu dấu chấm (.) như sau:

//Lấy thuộc tính của đối tượng
emp.name // ==> Zara
emp.age // ==> 10

//Đặt thuộc tính cho đối tượng
emp.name = "QTM" // <== QTM
emp.age = 20 // <== 20

Đối tượng array trong jQuery

Bạn có thể định nghĩa các mảng bằng cách sử dụng Array Literal như sau:

var x = [];
var y = [1, 2, 3, 4, 5];

Mảng có thuộc tính length, rất hữu ích khi cần lặp:

var x = [1, 2, 3, 4, 5];
for (var i = 0; i < x.length; i++) {
   // Làm gì đó với x[i]
}

Hàm (Function) trong jQuery

Một hàm trong JavaScript có thể được đặt tên hoặc ẩn danh. Một hàm được đặt tên có thể được định nghĩa bằng từ khóa function như sau:

function named(){
   // làm gì đó ở đây
}

Một hàm ẩn danh có thể được định nghĩa theo cách tương tự như một hàm thông thường nhưng nó sẽ không có bất kỳ tên nào.

Một hàm ẩn danh có thể được gán tới một biến hoặc được truyền tới một phương thức như sau:

var handler = function (){
   // Làm gì đó ở đây
}

jQuery sử dụng hàm ẩn danh rất thường xuyên như dưới đây:

$(document).ready(function(){
   // Làm gì đó ở đây
});

Các tham số trong jQuery

Các tham số trong JavaScript là một loại của Array mà có thuộc tính length. Ví dụ sau giải thích về điều này:

function func(x){
   console.log(typeof x, arguments.length);
}
func();                //==> "undefined", 0
func(1);               //==> "number", 1
func("1", "2", "3");   //==> "string", 3

Đối tượng Argument cũng có một thuộc tính callee, mà tham chiếu đến hàm bạn đang ở trong đó. Ví dụ:

function func() {
   return arguments.callee; 
}
func();                // ==> func

Context trong jQuery

Từ khóa nổi tiếng trong JavaScript là this tham chiếu tới Context hiện tại. Trong một hàm, this có thể thay đổi, phụ thuộc cách hàm đó được gọi.

$(document).ready(function() {
   // cái này tham chiếu tới window.document
});

$("div").click(function() {
   // tham chiếu tới div DOM element
});

Bạn có thể xác định Context cho một lần hàm bởi sử dụng các phương thức call() và apply().

Sự khác nhau giữa chúng là cách chúng truyền các tham số. call() truyền tất cả các tham số thông qua các tham số tới hàm, trong khi apply() chấp nhận một mảng như là các tham số.

function scope() {
   console.log(this, arguments.length);
}

scope() // window, 0
scope.call("foobar", [1,2]);  //==> "foobar", 1
scope.apply("foobar", [1,2]); //==> "foobar", 2

Phạm vi (Scope) trong jQuery

Phạm vi của một biến là khu vực trong chương trình của bạn mà biến đó được định nghĩa. Biến trong JavaScript sẽ chỉ có hai phạm vi:

  • Các biến Global − Một biến Global có phạm vi chung, nghĩa là nó được định nghĩa ở mọi nơi trong JavaScript code của bạn.
  • Các biến Local − Một biến Local sẽ chỉ nhìn thấy bên trong một hàm nơi nó được định nghĩa. Các tham số hàm luôn luôn là Local cho hàm đó.

Trong thân của một hàm, một biến Local có quyền ưu tiên cao hơn biến Global mà có cùng tên.

var myVar = "global";     // ==> Khai báo biến global

function ( ) {
   var myVar = "local";   // ==> Khai báo biến local
   document.write(myVar); // ==> local
}

Callback trong jQuery

Một callback là một hàm thuần JavaScript được truyền một số phương thức như là một tham số hoặc tùy chọn. Một số callback là các sự kiện, được gọi để cung cấp cho người sử dụng cơ hội để phản ứng lại khi một trạng thái nào đó được kích hoạt.

Hệ thống sự kiện trong jQuery sử dụng các callback này ở khắp mọi nơi, ví dụ:

$("body").click(function(event) {
   console.log("clicked: " + event.target);
});

Hầu hết callback cung cấp các tham số và một context. Trong ví dụ event-handler, callback được gọi với một tham số, một Event.

Một số callback được yêu cầu để trả về cái gì đó, cái khác trả về giá trị tùy ý. Để ngăn cản sự đệ trình form, một xử lý sự kiện Submit có thể trả về false như sau:

$("#myform").submit(function() {
   return false;
});

Các Closure trong jQuery

Các Closure được tạo bất cứ khi nào một biến được định nghĩa bên ngoài phạm vi hiện tại được truy cập từ bên trong phạm vi nội bộ.

Ví dụ sau chỉ cách biến counter là nhìn thấy trong các hàm create, increment, và print, nhưng không nhìn thấy bên ngoài chúng.

function create() {
   var counter = 0;
   return {
      increment: function() {
         counter++;
      },
		
      print: function() {
         console.log(counter);
      }
   }
}
var c = create();
c.increment();
c.print();     // ==> 1

Pattern này cho phép bạn tạo các đối tượng với các phương thức, mà hoạt động trên dữ liệu, mà không thấy được ở bên ngoài. Bạn ghi nhớ rằng, data hiding là khái niệm rất cơ bản của các chương trình hướng đối tượng.

Proxy Pattern trong jQuery

Một Proxy là một đối tượng mà có thể được sử dụng để điều khiển sự truy cập tới phần tử khác. Nó thi hành cùng giao diện cho đối tượng khác này và truyền trên bất kỳ phương thức nào tới nó. Đối tượng khác này thường được gọi là Real Subject.

Một Proxy có thể được khởi tạo tại vị trí của Real Subject này và cho phép nó để được truy cập ở chế độ từ xa. Chúng ta có thể lưu giữ phương thức setArray của jQuery trong một Closure và viết đè lên (overwrite) nó như sau:

(function() {
   // log all calls to setArray
   var proxied = jQuery.fn.setArray;

   jQuery.fn.setArray = function() {
      console.log(this, arguments);
      return proxied.apply(this, arguments);
   };
})();

Ví dụ trên bao code của nó trong một hàm để ẩn biến proxied. Sau đó, Proxy này log tất cả các lời gọi phương thức và ủy thác lời gọi đó cho phương thức ban đầu. Sử dụng apply(this, arguments) bảo đảm cho việc người gọi không thể chú ý về sự khác nhau giữa phương thức ban đầu và phương thức được ủy nhiệm.

Các hàm có sẵn trong jQuery

JavaScript đi kèm một tập hợp các hàm hữu ích gắn liền với nó. Những phương thức này có thể được sử dụng để thao tác String, Number, và Date.

Bảng dưới liệt kê các hàm JavaScript quan trọng:

Phương thứcMô tả
charAt()

Trả về ký tự tại chỉ mục (index) đã cho.

concat()

Kết nối hai chuỗi văn bản và trả về một chuỗi mới.

forEach()

Gọi một hàm cho mỗi phần tử của một mảng.

indexOf()

Trả về chỉ mục về sự xuất hiện đầu tiên bên trong việc gọi đối tượng String với giá trị đã cho, hoặc -1 nếu không tìm thấy.

length()

Trả về độ dài của chuỗi.

pop()

Gỡ bỏ phần tử cuối của một mảng và trả về phần tử đó.

push()

Thêm một hoặc nhiều phần tử tới phần cuối của một mảng và trả về độ dài mới của mảng đó.

reverse()

Đảo ngược thứ tự các phần tử trong một mảng – phần tử đầu tiên thành cuối cùng và cuối cùng thành đầu tiên.

sort()

Sắp xếp phân loại các phần tử của một mảng.

substr()

Trả về các ký tự trong một mảng bắt đầu từ vị trí đã cho từ số các ký tự đã xác định.

toLowerCase()

Trả về giá trị chuỗi đang gọi được biến đổi thành kiểu chữ thường.

toString()

Trả về sự biểu diễn chuỗi của giá trị số.

toUpperCase()

Trả về giá trị chuỗi đang gọi được biến đổi thành chữ hoa.

Document Object Model (DOM)

DOM là một cấu trúc cây của các phần tử HTML đa dạng, như sau:

<html>
   <head>
      <title>Ví dụ jQuery QTM</title>
   </head>
	
   <body>
      <div>
         <p>Đây là đoạn văn đầu tiên.</p>
         <p>Đây là đoạn văn thứ hai.</p>
         <p>Đây là đoạn văn thứ ba.</p>
      </div>
   </body>
	
</html>

Nó sẽ cho kết quả sau:

Đây là đoạn văn đầu tiên.
Đây là đoạn văn thứ hai.
Đây là đoạn văn thứ ba.

Sau đây là một số điểm quan trọng về cấu trúc cây trên:

  • Thẻ <html> là ancestor (gốc hay là tổ tiên) của tất cả các phần tử khác; nói cách khác, tất cả phần tử khác là con cháu của phần tử <html>.
  • Thẻ <head> và <body> không là hậu duệ (descendant), nhưng cũng là con của <html>.
  • Phần tử <p> là con của phần tử <div>, con của phần tử <body> và <html>, và là anh em của các phần tử <p> khác.

Theo Tutorialspoint

Bài trước: jQuery là gì?

Bài tiếp: Selector trong jQuery

Thứ Ba, 31/07/2018 22:26
53 👨 1.174
0 Bình luận
Sắp xếp theo
    ❖ jQuery