Nhiều tham số cho bộ chọn jQuery?


112

Tôi chỉ đang xem plugin nút jQueryUI và nhận thấy điều này

$("button, input:submit, a", ".demo").button();

Tôi chưa bao giờ thấy một cái gì đó như thế này. Điều này có giống như nhiều lựa chọn trong một bộ chọn jQuery không?

Câu trả lời:


172

Đối số thứ hai ( ".demo"trong ví dụ của bạn) là ngữ cảnh , về cơ bản bộ chọn của bạn bị hạn chế để chỉ khớp với con cháu của một ngữ cảnh xác định :

$(expr, context)

Chỉ tương đương với sử dụng findphương pháp:

$(context).find(expr)

Hãy xem tài liệu của hàm jQuery :

Bối cảnh bộ chọn

Theo mặc định, các bộ chọn thực hiện các tìm kiếm của chúng trong DOM bắt đầu từ gốc tài liệu. Tuy nhiên, một ngữ cảnh thay thế có thể được cung cấp cho tìm kiếm bằng cách sử dụng tham số thứ hai tùy chọn cho $()hàm. Ví dụ: nếu trong một hàm gọi lại, chúng tôi muốn thực hiện tìm kiếm một phần tử, chúng tôi có thể hạn chế tìm kiếm đó:

$('div.foo').click(function() {
  $('span', this).addClass('bar');
  // it will find span elements that are
  // descendants of the clicked element (this)
});

Cũng lưu ý rằng bộ chọn bạn đăng "button, input:submit, a", được gọi là Bộ chọn nhiều và ở đó bạn có thể chỉ định bất kỳ số bộ chọn nào để kết hợp thành một kết quả duy nhất, chỉ bằng cách phân tách chúng bằng dấu phẩy.


Cool không bao giờ biết điều đó. Khi tôi muốn giới hạn tiếng nói giống như một khu vực lớp vì vậy nó sẽ không tìm kiếm trên toàn bộ trang tôi chỉ làm một cái gì đó giống như $ ( '# id .class')
chobo2

Điều đó thực sự là ngược so với những gì bạn đã nghĩ khi nhìn vào nguồn. Tôi mong đợi đối số đầu tiên là siêu lớp tiếp theo là các lớp con thu hẹp nó lại. À tốt.
light24bulbs

3
Trình duyệt có nhanh hơn nếu tôi xác định ngữ cảnh không?
Andres SK
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.