2010-08-01 36 views
22

Tôi là người mới bắt đầu trong JQuery.

Khi nào thì dấu chấm sau $ được sử dụng?

$.trim(str) và không $trim(str)?

Và một số trường hợp không có điểm: $(document).ready, nhưng không phải $.(document).ready?

Cảm ơn.

+4

Câu trả lời ngắn: ký hiệu đô la nói chung sẽ được theo dõi ngay lập tức bằng dấu ngoặc đơn hoặc theo dấu chấm và tên phương thức. Tất nhiên, bạn chắc chắn nên cố gắng học ngôn ngữ JavaScript để bạn hiểu tất cả các dấu chấm và dấu ngoặc đơn thực sự có ý nghĩa gì :) – Martin

Trả lời

18

Tôi không tin rằng bạn có lựa chọn, chỉ một cú pháp là chính xác và sẽ thực sự hoạt động. Biểu tượng $ là gì khác hơn là một ký hiệu viết tắt cho các chức năng jQuery, vì vậy khi bạn viết:

$('some selector') 

Bạn đang kêu gọi một chức năng, được gọi là jQuery, và đi qua trong một chuỗi, hoặc trong trường hợp của bạn, bạn đi qua trong đối tượng document.

Khi nói đến cách gọi phương thức, chẳng hạn như phương pháp trợ giúp như cắt, bạn sẽ cần sử dụng cú pháp sau, jQuery.trim() hoặc $.trim(). Thật dễ dàng để kiểm tra bản thân, chỉ cần thử cách này:

typeof($.trim) //returns "function" 
typeof($trim) //returns "undefined" 
+4

… và ['typeof'] (https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference Toán tử/Toán tử/Special_Operators/typeof_Operator) không cần dấu ngoặc đơn, cũng không phải dấu chấm. ;-) –

3

Khi bạn truy cập phương pháp tĩnh của jQuery không có sẵn trong nguyên mẫu nói, một phần tử DOM. trim là phương pháp tĩnh được API hiển thị.

Không có $.fn.trim và chúng tôi không thể tin cậy dựa vào String.prototype.trim vì các phương pháp có thể khác nhau.

Về $trim không được xác định. trim là phương thức $ là jQuery. Bạn có thể thực hiện hoặc là $['trim'] hoặc $.trim và đó là cách duy nhất để truy cập.

19

Trong jQuery, $ là tên biến, như foo hoặc bar, tham chiếu đến đối tượng jQuery toàn cầu. Nếu bạn muốn truy cập một thuộc tính trên đối tượng jQuery, thì bạn sử dụng dấu chấm. Đây là những cơ bản giống nhau:

$.property 
jQuery.property 

(Từ $ là một biến giống như bất kỳ khác, nó có thể cho bạn để đặt nó vào bất cứ điều gì bạn thích này có thể xảy ra nếu bạn đã bao gồm thư viện Prototype sau bao gồm cả. Thư viện jQuery, thư viện này sẽ để lại cho bạn $ trỏ đến bí danh của hàm document.getElementById.)

Đối tượng jQuery xảy ra cũng là một chức năng, vì vậy bạn có thể gọi là chức năng giống như bạn sẽ gọi bất kỳ chức năng khác:

$(arguments) 
alert("arguments!") 

Mặt khác, $trim chỉ là một biến toàn cầu, như $ hoặc location, mà có thể là một hàm bạn định nghĩa bản thân:

var $trim = function(arguments) { 
    return "foo"; 
}; 

$trim(str) 
+1

+1 câu trả lời hay nhất – CodyBugstein

2

cú pháp $.foo nghĩa là $ đang được coi là một đối tượng với một lĩnh vực được gọi là foo, thường là một chức năng mà bạn đang gọi. Vì vậy, điều này thực sự không có gì khác biệt với một hàm độc lập được gọi là foo - nó chỉ được bắt đầu bằng $. để phân biệt nó với bất kỳ hàm nào khác và liên kết nó với thư viện jQuery.

Khi bạn sử dụng $(something).foo thì bạn đang chuyển something vào hàm jQuery và kết quả phụ thuộc vào những gì bạn đang chuyển (có thể là công cụ chọn để tìm đối tượng hiện có hoặc có thể là một mẩu tin HTML một đối tượng mới, hoặc nó có thể là một hàm được đăng ký để chạy trên tải trang). Trong mọi trường hợp, sau đó bạn gọi số foo trên đối tượng trả về kết quả, có thể được áp dụng cho một số đối tượng DOM nếu bộ chọn bạn đã vượt qua xác định một lớp, ví dụ.

Cú pháp đầu tiên được sử dụng khi hàm jQuery hoạt động trên một thứ khác ngoài đối tượng DOM (các phần của trang HTML). Ví dụ: một chuỗi ($.trim) hoặc một mảng ($.each). Đó không phải là yếu tố của trang, chúng chỉ là dữ liệu thuần túy trong JavaScript.

Cú pháp thứ hai được sử dụng khi vận hành trên các phần tử DOM - bạn sử dụng $(something) để tạo đối tượng jQuery, là một trình bao bọc xung quanh không hoặc nhiều phần tử DOM. Sau đó, bạn gọi các hàm trên trình bao bọc được trả về để thao tác thuận tiện với các đối tượng mà nó kết thúc tốt đẹp.

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