37

Tôi đang làm việc với các công cụ phát triển của google chrome trên một trang không có jQuery (hoặc bất kỳ thư viện nào khác sử dụng ký hiệu $ làm lối tắt). Khi tôi kiểm tra $ bởi giao diện điều khiển (bằng cách chỉ cần gõ vào và bấm phím Enter), tôi đã nhận này:

$ 
function() { [native code] } 

Vì vậy, chrome có một số chức năng có nguồn gốc có thể được tham chiếu bởi $. Chỉ có chrome dường như có cái này và tôi không thể truy cập nó qua window['$'] cũng không qua document['$'] hoặc this['$'].

Tôi không thể tìm ra chức năng này là gì. Bạn có biết những gì nó làm và có thể có một số thông tin cơ bản về điều này? Cảm ơn bạn trước!

+0

Thông tin có thể được tìm thấy tại https://developers.google.com/chrome-developer-tools/docs/console và https://getfirebug.com/wiki/index.php/Command_Line_API. –

+0

URL nào và phiên bản Chrome nào? Tôi tìm thấy một trang mà không sử dụng jQuery và không bí danh '$' (nó là đáng ngạc nhiên khó khăn), nhưng tôi không thấy 'function() {[native code]}'. Bạn đã tạm dừng ở điểm ngắt? –

+1

@Matt Ball Bạn chỉ có thể mở 'about: blank', mở giao diện điều khiển và gõ' $ 'rồi nhấn enter. –

Trả lời

4

Điều này đã thay đổi một lần nữa, ngay cả từ năm ngoái.

Bảng điều khiển devtools cung cấp $ làm bí danh cho document.querySelector, cùng với many other things; đây là một danh sách trích:

  • $(selector) trả về tham chiếu đến phần tử DOM đầu tiên với bộ chọn CSS quy định. Hàm này là bí danh cho hàm document.querySelector().
  • $$(selector) trả về một mảng các phần tử khớp với bộ chọn CSS đã cho. Lệnh này tương đương với việc gọi số document.querySelectorAll().
  • $_ trả về giá trị của biểu thức được đánh giá gần đây nhất.
  • Các $0, $1, $2, $3$4 lệnh làm việc như một tài liệu tham khảo lịch sử vào năm yếu tố DOM cuối cùng kiểm tra trong bảng điều khiển Elements hoặc cuối năm đối tượng JavaScript đống chọn trong bảng điều khiển Profiles.

... và một loạt các loại khác.

Lưu ý cách gọi số $ bí danh document.querySelector, nhưng nói $$ là "tương đương" để gọi document.querySelectorAll. Cả hai dường như không đúng; $ === document.querySelectorfalse$$ trả về một mảng , không phải là NodeList.

+1

Cảm ơn! Việc cập nhật câu hỏi này sẽ hữu ích cho khách truy cập trong tương lai. :) –

5

Ther're hai selectors trong thanh tra Webkit, giống nhau mà Mootools một: $$$

Bạn có thể tìm thấy một số thông tin về nó, here

Họ Juste đây để giúp bạn trong việc gỡ lỗi.

24

Đây là một trong các chức năng Công cụ dành cho nhà phát triển Chrome (do đó không có sẵn từ trang). Bạn có thể thấy documentation for it on the Console page (mặc dù chỉ nói rằng nó thực hiện Firebug console commands)

Nó nhận được một phần tử theo id của nó.

+0

chính xác tài liệu tôi đang tìm kiếm, cảm ơn! –

+2

Nó không nhận được phần tử theo id nữa. Bây giờ nó thực hiện các bộ chọn phức tạp hơn. – Martin

5

https://developers.google.com/chrome-developer-tools/docs/console

Nó chỉ truy cập nhanh vào document.getElementById.

+0

Tôi đồng ý, nhưng cũng lưu ý rằng '$ == document.getElementById' trả về' false' ... odd! – aaaidan

+0

@aaaidan, đó là bởi vì nó chỉ không nhận được phần tử theo id, Nó hỗ trợ các bộ chọn kiểu sizzle quá! (không thử nghiệm với những người phức tạp mặc dù) –

+0

Ah đúng sự thật. Có lẽ nó tham chiếu document.querySelector, sau đó? – aaaidan

6

Đánh giá bởi link to the dev tools hiện tại sử dụng document.querySelector() thay vì chỉ getElementById().

+0

cập nhật tốt đẹp, tốt để biết - cảm ơn! –

13

Câu trả lời hiện có đã lỗi thời, $ không phải là bí danh cho document.getElementById hoặc document.querySelector, nhưng là trình bao bọc cho querySelector. Trình bao bọc này thực sự lấy một đối số thứ hai tùy chọn cho phần tử để truy vấn con của.

này gia đình của các chức năng được ghi chép lại dưới Console: Selecting Elements:

Chọn Elements

Có một vài phím tắt cho việc lựa chọn các yếu tố. Điều này giúp bạn tiết kiệm thời gian quý báu khi so sánh với việc loại bỏ các đối tác tiêu chuẩn của họ.

$() Trả về phần tử đầu tiên khớp với công cụ chọn CSS được chỉ định. Đó là lối tắt cho document.querySelector().

$$() Trả về một mảng của tất cả các phần tử khớp với bộ chọn CSS được chỉ định. Đây là bí danh cho document.querySelectorAll()

$x() Trả về một mảng các phần tử phù hợp với quy định XPath.


Tuy nhiên, các giá trị này chỉ có giá trị mặc định trong giao diện điều khiển. Nếu trang ghi đè bằng cách bao gồm một cái gì đó như jQuery, giao diện điều khiển sẽ sử dụng giá trị từ chính trang đó và một cái gì đó như $('p') sẽ trả về một đối tượng jQuery thay vì chỉ là phần tử p đầu tiên.

+1

Liên kết đã lỗi thời, các chức năng này hiện được ghi lại [ở đây] (https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference). Cũng lưu ý rằng '$$()' trả về một 'Mảng', không giống' document.querySelectorAll() 'trả về một' NodeList'. – nollidge

+0

Và [tài liệu hiện tại] (https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference # queryselector) gọi '$' một "bí danh" cho 'document.querySelector' (mặc dù điều đó dường như không đúng; ít nhất,' $ === document.querySelector' là 'false'). –