giả sử tôi có một đánh dấu như thế này:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
và tôi muốn chọn #moo.
tại sao $('#foo').find('span')
hoạt động, nhưng $('span', $('#foo'));
không?
giả sử tôi có một đánh dấu như thế này:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
và tôi muốn chọn #moo.
tại sao $('#foo').find('span')
hoạt động, nhưng $('span', $('#foo'));
không?
var ele = $("div #foo")
cách bạn có thể tới moo từ đây (không sử dụng tài liệu tham khảo mảng)
Câu trả lời:
Trên thực tế, $ ('# id', this); sẽ chọn #id ở bất kỳ cấp con cháu nào, không chỉ cấp con ngay lập tức. Hãy thử cái này thay thế:
$(this).children('#id');
hoặc là
$("#foo > #moo")
hoặc là
$("#foo > span")
moo
, không phải lớp.
.children()
và .find()
tương tự, ngoại trừ việc trước đây chỉ đi một cấp xuống cây con DOM.
Bạn có thể sử dụng find
tùy chọn để chọn một phần tử bên trong một phần tử khác. Ví dụ: để tìm một phần tử có id txtName trong một div cụ thể, bạn có thể sử dụng như
var name = $('#div1').find('#txtName').val();
.... but $ ('span', $ ('# foo')); không hoạt động?
Phương thức này được gọi là cung cấp ngữ cảnh bộ chọn .
Trong đó, bạn cung cấp đối số thứ hai cho bộ chọn jQuery . Nó có thể là bất kỳ chuỗi đối tượng css nào giống như bạn chuyển để chọn trực tiếp hoặc một phần tử jQuery.
ví dụ.
$("span",".cont1").css("background", '#F00');
Dòng trên sẽ chọn tất cả các nhịp trong vùng chứa có tên lớp cont1
.
cả hai dường như đang hoạt động.
xem fiddle: http://jsfiddle.net/maniator/PSxkS/
$('#moo')
? ;) Btw. nó hoạt động: jsfiddle.net/fkling/k5X2r