2012-01-27 24 views

Trả lời

3

Khi bạn tạo ra khung cảnh, bạn đang nói với jQuery để tìm ra p yếu tố bên trong bối cảnh đó, nên chọn của bạn sẽ trông đối với bất kỳ thẻ p nào là con của ngữ cảnh.

Nếu bạn thêm vùng chứa vào ngữ cảnh, nó sẽ có thể tìm thấy phần tử đó.

var jQueryObj = $("<div><p>testing</p></div>"); 
 
// Display the length 
 
$('body').html($("p", jQueryObj).length);
<script src="http://code.jquery.com/jquery-2.2.0.js"></script>

2

Khi bạn vượt qua một ngữ cảnh để jQuery, nó tương đương với sử dụng phương pháp find, mà nhìn vào các yếu tố hậu duệ. Từ jQuery docs:

Bên trong, bối cảnh selector được thực hiện với phương pháp .find(), nên $ ('tuổi', điều này) là tương đương với $ (this) .find ('tuổi').

yếu tố p bạn không phải là một hậu duệ, vì vậy bạn sẽ cần phải sử dụng filter:

jQueryObj.filter("p"); 

Phương pháp filter giảm các thiết lập phù hợp với các yếu tố để những người phù hợp với bộ chọn (hoặc vượt qua một bài kiểm tra được xác định bởi một hàm). Trong trường hợp của bạn, bộ phần tử phù hợp chứa một phần tử (p), sẽ khớp với bộ chọn.

0

Chỉ đơn giản là không có phần tử <p> trong bạn jQueryObj.

Sử dụng jQueryObj làm ngữ cảnh sẽ giới hạn tìm kiếm cho bộ chọn được cung cấp cho ngữ cảnh. Nó cũng giống như viết:

jQueryObj.find('p'); 

Bên trong, jquery thực sự sử dụng .find() khi bạn sử dụng cú pháp $(selector, context), như đã nêu trong doc:

Bên trong, bối cảnh selector được thực hiện với Phương thức .find(), vì vậy $ ('span', this) tương đương với $ (this) .find ('span').

Đọc thêm:

0

Bạn đang tìm kiếm <p> bên ban đầu của bạn <p> (jQueryObj đã đại diện cho một thẻ <p>).

Vì không có phần tử <p> trong phần tử <p> gốc của bạn, tìm kiếm của bạn không trả về bất kỳ kết quả nào.

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