2012-06-10 45 views
8

Tôi đang học jQuery từ một cuốn sách có tên là Head First jQuery. Cuốn sách rất dễ học. Vấn đề là, có một hàm .each() (được bao gồm trong hình ảnh mà tôi đã quét từ) có tham số hàm(). Tham số hàm() là indexvalue. Chỉ mục được giải thích trên trang, nhưng giá trị của nó thì sao? Và cũng có thể, vì nó là một hàm ẩn danh (mà không thể được tái sử dụng) làm thế nào nó lấy bất kỳ tham số nào?jQuery.each (hàm (chỉ mục, giá trị) {}); Giá trị là gì?

+5

http://api.jquery.com/each – BoltClock

+0

Và ai các chức năng ẩn danh có thể không nhận tham số không? :) – BoltClock

Trả lời

1

Giá trị thứ hai mà bạn gọi là giá trị giá trị của bộ sưu tập hiện đang được xử lý bởi từng chức năng.

Đối với câu hỏi thứ hai của bạn - các chức năng ẩn danh có thể được sử dụng lại, chỉ vì chúng không có tên không có nghĩa là chúng không thể có tham số hoặc được thực thi. Xem ví dụ sau:

function execute_fn(fn) { 
    fn(1,2); 
} 

execute_fn(function(a,b) { ... }); 
+0

Giá trị ** của bộ sưu tập hiện đang được xử lý ** có nghĩa là gì không ?: - $ (". MyClass") mỗi (hàm (chỉ số, giá trị) {}); Và chúng tôi có: - cadence441

+0

... tiếp tục Vậy giá trị của phần tử đầu tiên sẽ trở thành "Nút"? Và (fn) jQuery được xác định hoặc do người dùng xác định? Ý tôi là hàm .each() là jQuery được định nghĩa. Giống như vậy là (fn) jQuery được định nghĩa? Nếu nó được người dùng định nghĩa, chúng tôi không chuyển bất kỳ thứ gì làm thông số fn, phải không? Và tương tự cho (a, b) phải không? – cadence441

+0

Trong ví dụ của bạn trong giá trị thực thi đầu tiên sẽ là phần tử DOM của nút (do đó sẽ là điều này; trong mỗi hàm tham số thứ hai và điểm này cho cùng một đối tượng) và lần sau nó sẽ là phần tử DOM của nút gửi. Về ví dụ của tôi: nó chỉ nên chứng minh làm thế nào một chức năng ẩn danh có thể được thực hiện bởi một chức năng khác nhau. Nó không sử dụng jQuery chút nào. Tôi khuyên bạn nên đọc về các khái niệm cơ bản về JavaScript. JavaScript có thể trông giống như C++/C/Java nhưng nó rất khác nhau. – Preli

17

Có hai phương pháp each trong jQuery. Một là cho đi xe đạp trên một đối tượng jQuery có chứa nhiều trận đấu. Ví dụ, giả sử chúng ta muốn tìm tất cả các đoạn văn trên trang:

$("p").each(function(){ 
    // Do something with each paragraph 
}); 

Thứ hai, có một chung chung hơn each cho iterating trên các đối tượng hoặc các mảng:

var names = ["Jonathan", "Sampson"]; 
$.each(names, function(){ 
    // Do something with each name 
}); 

Khi chu kỳ jQuery trên các yếu tố trong một trong những ví dụ này, nó giữ số đối tượng mà nó hiện đang xử lý. Khi nó thực thi hàm ẩn danh của chúng ta, nó truyền vào hai tham số - giá trị hiện tại chúng ta đang ở (chỉ mục), và đối tượng (giá trị) đó.

var names = ["Jonathan", "Sampson"]; 
$.each(names, function(index, value){ 
    alert(value + " is " + index); 
}); 

Đầu ra nào "Jonathan là 0" và "Sampson là 1" vì chúng tôi đang sử dụng chỉ mục dựa trên không.

Nhưng còn đối tượng jQuery gốc của chúng ta thì sao?

$("p").each(function(index, value){ 
    alert(value.textContent); // The text from within the paragraph 
}); 

Trong trường hợp này, value là một đối tượng thực tế HTMLParagraphElement, vì vậy chúng ta có thể truy cập vào các thuộc tính như textContent hoặc innerText vào nó nếu chúng ta thích:

+0

Vì vậy 'giá trị' là đối tượng chứ không phải thuộc tính' giá trị'? Bởi thuộc tính 'value' tôi có nghĩa là giống như trong một' đầu vào' có một thuộc tính 'type' có thể là' nút', 'submit' và như vậy có một thuộc tính' value' cho các kiểu 'input' nữa. – cadence441

+0

@ cadence441 Có, 'giá trị' là phần tử. Đây có thể là một phần tử HTML hoặc đây có thể là một chuỗi. Hoặc nó có thể là một mảng, một đối tượng hoặc một số - nó phụ thuộc vào bộ sưu tập bạn đang đi xe đạp. Và lưu ý rằng tên biến 'đầu vào' và' giá trị' không quan trọng - chỉ có thứ tự. Bạn sẽ thường thấy mọi người chỉ bao gồm 'chỉ mục' hoặc họ sẽ sử dụng cả hai dưới các tên khác nhau, như' i' và 'v'. – Sampson

+0

vì vậy trong ví dụ cuối cùng, "giá trị" giống như "điều này"? – Andy

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