Câu hỏi Ký hiệu đô la


Tôi có một cái gì đó đơn giản như thế này:

$(selector).append("somestuff");

Nhưng kể từ khi tôi sẽ sử dụng lại bộ chọn, tôi nhớ nó với:

var $selector = $(selector);

Vì vậy, tôi kết thúc với:

$selector.append("somestuff");

Câu hỏi của tôi là, tôi có nên làm điều đó hay tôi nên làm:

var selector = $(selector);
selector.append("somestuff");

Đang thử một trong hai, cả hai công trình. Phương pháp nào là đúng và tại sao? Là $ trong $selector không cần thiết vì đối tượng jquery đã được khai báo trong $(selector)?


Chỉnh sửa

Cảm ơn câu trả lời. Nó có vẻ rất đơn giản và khá rõ ràng. Tuy nhiên, dường như có sự bất đồng về việc tôi có nên sử dụng hay không $ trong biến. Sẽ tốt hơn nếu mọi người bỏ phiếu cho câu trả lời. :)


41
2017-07-24 21:21


gốc


Câu hỏi của bạn cho thấy bạn hơi bối rối về cách đối tượng cư xử. Bạn có thể muốn xem lại một chút kiến ​​thức cơ bản về lập trình hướng đối tượng. - Spencer Ruport


Các câu trả lời:


Tôi đã nhìn thấy nó được thực hiện theo cả hai cách. Tất cả những gì bạn đang làm là tạo một biến với tên '$ selector', vì vậy chúng có chức năng tương đương. Điều tốt đẹp về nó là nó làm cho họ dễ dàng để chọn ra như là đối tượng jQuery.


32
2017-07-24 21:24





$ chỉ là một cái tên - tên trong JavaScript có thể chứa các ký hiệu đô la, và có thể chỉ bao gồm một dấu đô la.

Cho dù bạn sử dụng một ký hiệu đô la trong tên của bạn không liên quan đến jQuery - không có gì đặc biệt về ký hiệu đô la, ngoại trừ jQuery định nghĩa một hàm gọi là $.


47
2017-07-24 21:24



Tôi đã nhìn thấy mã JQuery với $j... đó là một điều JQuery hay chỉ là một tên biến tùy chỉnh? - CodyBugstein
@Imray: Thực tế phổ biến đối với các biến tiền tố tham chiếu đến các đối tượng jQuery có ký hiệu đô la, ví dụ: var $highlights = $('div.highlight');. - RichieHindle
Hay quá cảm ơn! Tôi không bao giờ biết điều đó và sẽ rất khó để tìm ra. - CodyBugstein


Dấu hiệu tiền mặt chỉ là một bí danh cho hàm jQuery. Bắt đầu tên biến với $ không có hiệu lực trên biến đó.

Mặc dù vậy, thường là trong quá trình phát triển plugin jQuery, sử dụng các biến đã được bọc trong jQuery với một dấu hiệu tiền mặt, vì vậy bạn biết bạn có thể gọi các phương thức jQuery mà không cần phải bọc chúng.


21
2017-07-24 21:24



+1. Tiền tố $ cho biến của bạn chỉ ra rằng đó là một đối tượng jQuery và bạn có thể gọi tất cả các phương thức jQuery mà không cần suy nghĩ liệu bạn có cần truyền biến đó cho phương thức jQuery hay không. - SolutionYogi


RichieHindle là chính xác. Mở rộng:

Biến Javascript cho phép ký tự '$'. Vì vậy, ví dụ, bạn có thể có những điều sau đây:

var $i = 1;
var i = 1;

Cả i và $ i đều có cùng giá trị, và cả hai đều là các tên biến hoàn toàn hợp pháp.

jQuery gán chính nó (đối tượng jQuery) thành '$' vì theo truyền thống, đó là những gì mà khung công tác Javascript đã làm cho các bộ chọn. Không có ý nghĩa cố hữu nào với '$' ngoài những gì jQuery đưa ra.


11
2017-07-24 21:26



Tôi nghĩ rằng các khung JavaScript đã chọn $ vì điều này vì hầu hết mọi người không thực sự nhận thức được nó có thể được sử dụng trong các tên biến nên hiếm khi nó đụng độ khi giới thiệu các khuôn khổ thành mã hiện có. - hippietrail


Tôi thích tiền tố tất cả các tên đối tượng jQuery của tôi với $ để tôi biết nó thực sự là một đối tượng jQuery, không phải là một tham chiếu DOM.

Đó là một quy ước đặt tên tốt.


9
2017-07-24 21:25





Trong trường hợp này, $selector là một ví dụ về ký hiệu Hungary. Nó ở đó để bạn biết rằng $selector là một đối tượng jQuery.

Nếu bạn làm cho nó tùy chỉnh của bạn để luôn luôn có các đối tượng jQuery bắt đầu với $ nếu bạn đột nhiên sử dụng sai, nó sẽ trông sai sẽ giúp bạn tìm thấy một vấn đề trong mã của bạn.

Ngôn ngữ không thể quan tâm ít hơn. Họ cũng có thể đặt tên cho hàm jQuery J hoặc bất cứ điều gì khác; các $ không phải là một biểu tượng đặc biệt.


3
2018-03-25 09:24



Tất nhiên, nghiêm túc nói, nó không cho phép bạn "biết" rằng $selector là một đối tượng jQuery; bạn có thể dễ dàng hiểu sai và viết var $selector = 0;. Vì vậy, nó không đảm bảo. - Lightness Races in Orbit
OK để công bằng nó cho phép bạn biết rằng $ selector NÊN là một đối tượng jquery - Zachary K
Đúng chính xác. :) - Lightness Races in Orbit


Ừ.

jQuery luôn trả về một đối tượng jQuery. Đó là những gì cho phép chuỗi.

Bạn đã xác định biến để bạn có được một đối tượng jQuery trở lại vì vậy $ là không cần thiết


2
2017-07-24 21:24