2011-09-16 39 views
14

Tôi chỉ cần đi qua một số hướng dẫn xương sống và tôi có một câu hỏi jQuery chung mà tôi đã thực sự được tự hỏi trong một thời gian.

Thỉnh thoảng tôi thấy các cuộc gọi có tham số thứ hai trong bộ chọn jQuery, ví dụ: $('ul', this.el).

Mục đích của tham số thứ hai này trong bộ chọn là gì? Và tôi không thực sự có nghĩa là trong bối cảnh của bất kỳ ví dụ xương sống, chỉ cần nói chung mục đích của việc truyền param thứ hai trong bộ chọn là gì và tại sao nó luôn luôn là một đối tượng được thông qua ở đó? Tôi không thể tìm thấy bất kỳ tài liệu nào về điều này.

+0

đang tìm kiếm ... không thể tìm thấy. nhờ liên kết mặc dù – user834418

Trả lời

10

Nó thu hẹp tìm kiếm thẻ ul trong phần tử DOM của thành phần chế độ xem của bạn.

+0

Ah, đẹp quá! Tôi nghĩ rằng nó đã làm một cái gì đó như thế chỉ có thể không bằng lời nói cho bản thân mình. Cảm ơn! – user834418

+1

btw, bạn có biết nếu có bất kỳ lợi ích hiệu suất để làm điều đó như thế chứ không phải là $ (this.el) .find ('ul'); hoặc $ (this.el + 'ul'); hoặc về cơ bản là giống nhau? – user834418

14

Ý nghĩa giống hệt:

$(this.el).find('ul') 

Bên trong, sau một loạt các bài kiểm tra, jQuery hiểu ra rằng nó cần phải lật nó xung quanh để các .find() cuộc gọi trên, vì vậy nó không, và bắt đầu kết thúc.

Vì vậy, việc cung cấp ngữ cảnh làm đối số thứ hai chỉ là cách chậm hơn để thực hiện .find().

Here it is in the source.

// HANDLE: $(expr, context) 
// (which is just equivalent to: $(context).find(expr) 
} else { 
    return this.constructor(context).find(selector); 
} 

... nơi this.constructor$ chức năng, context là đối số thứ hai của bạn, và selector là đối số đầu tiên của bạn.