2012-01-04 21 views
6
<form action="blah"> 
    <table>...</table> 
    <table> 
    <tr>...</tr> 
    <tr> 
     <td>...<td> 
     <td> **some text that changes** </td> 

Với cấu trúc html ở trên, làm thế nào để tôi nhận được văn bản mà thay đổi, sử dụng jQueryselectors jQuery chọn ô thứ 2 của hàng thứ 2 của bảng thứ 2 của một hình thức với hành động cụ thể attrib

Vì vậy, tôi muốn jquery để tìm kiếm như thế này: -look cho biểu mẫu có phân phối hành động = "blah" - chọn bảng thứ hai của biểu mẫu Chọn hàng thứ 2 (tr) của bảng Chọn ô thứ 2 (td) của hàng -gửi cho tôi văn bản

Điều này sẽ giúp tôi tuyệt vời ly hiểu jquery ... Tôi mới vào nó.

Something như $ ('hình thức [action = "blah"]'). Bảng (2) .rows (2) .cells (2) .text nhưng đây không phải là một trận đấu jquery hợp lệ

Trả lời

5

Vì vậy, bạn muốn ô bảng thứ hai trong hàng của bảng thứ hai của bảng thứ hai? Chức năng eq có thể làm điều này dễ dàng

DEMO

var text = $("table:eq(1) tr:eq(1) td:eq(1)").text(); 

Cũng lưu ý rằng bạn không đóng ô trong bảng này một cách chính xác:

<td>...<td> 

nên

<td>...</td> 

EDIT

Nếu có bảng khác trên trang, và bạn muốn chắc chắn bạn sẽ có được thứ hai trên theo hình thức, sau đó thêm các hình thức để chọn của bạn:

var text = $("form[action='blah'] table:eq(1) tr:eq(1) td:eq(1)").text(); 
+0

yếu tố bảng không cần phải được đóng – Sinetheta

+0

@Sinetheta - bạn có chắc? Fiddle của tôi không hoạt động ngay cho đến khi tôi đóng 'td' –

+0

http://jsfiddle.net/ju79Y/1/ – Sinetheta

2

Bạn có thể sử dụng .eq(index).
Để chọn sử dụng phần tử thứ hai eq(1).
Làm việc jsFiddle.

2

Target sau đó đi sâu với tìm thấy. Adam có ý tưởng đúng. Bạn chỉ muốn tránh làm một bộ chọn khổng lồ. Đó là một sự cân bằng giữa khả năng đọc và tốc độ.

Nếu bạn muốn tối ưu hóa đầy đủ thì hãy thực hiện từng bước xuống bằng tìm(). Nhưng trừ khi bộ chọn này đang được đánh giá nhiều lần, nó không quan trọng.

$('form[action="blah"]').find("table:eq(1) tr:eq(1) td:eq(1)").text(); 

jsFiddle

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