2011-01-05 35 views
5

HTMLTìm textarea tiếp theo sử dụng Jquery

<tr id="rowId"><td><textarea class="inputTextarea"></textarea></td><td><textarea class="inputTextarea"></textarea></td></tr> 
<tr id="rowId2"><td><textarea class="inputTextarea"></textarea></td><td><textarea class="inputTextarea"></textarea></td></tr> 
<tr id="rowId3"><td><textarea class="inputTextarea"></textarea></td><td><textarea class="inputTextarea"></textarea></td></tr> 

Provided Tôi biết ROWID, làm thế nào để tìm ra textarea tiếp theo trên trang này, bắt đầu từ bất kỳ điểm nào tùy ý. Tôi không có nghĩa là bất kỳ đầu vào, văn bản chỉ. Tôi cần để có thể bắt đầu BẤT CỨ hàng, và tiến vào văn bản tiếp theo, về cơ bản đi xuống các hàng.

EDIT Dựa trên câu trả lời, tôi đã sử dụng đoạn mã sau để đi qua hàng textareas bởi hàng:

var curElt = $('#' + startAt); //startAt is the first row id 

     for(var i=1; i < 10; i++) { 

      $(curElt).find('textarea').eq(0).val(i); 
      $(curElt).find('textarea').eq(1).val(i+1); 

      curElt = $(curElt).next(); 
     } 
+2

Dựa trên nhiều câu trả lời, có vẻ như câu hỏi của bạn rõ ràng chưa đủ rõ ràng. Bạn chỉ có nghĩa là bạn muốn tương đương với cách nhấn phím Tab, tập trung vùng văn bản kế tiếp theo thứ tự mã nguồn/tabIndex? ID hàng phải làm gì với điều này? – Phrogz

+0

Tôi có một loạt các hàng, mỗi hàng có một ID duy nhất. Người dùng có thể bắt đầu dán dữ liệu tại bất kỳ vùng văn bản cụ thể nào (có 2 phần tử văn bản trên mỗi hàng). Dữ liệu sẽ là dữ liệu CSV từ Excel. Công việc của tôi là điền vào các textareas bắt đầu từ một người dùng được dán vào (do đó tôi biết ID hàng họ đang bắt đầu từ) và bật. Tôi không chắc làm thế nào để giải thích bản thân mình tốt hơn. Tôi đoán công trình so sánh TAB. – sarsnake

Trả lời

9

Bạn có thể sử dụng nextfind phương pháp:

$('#' + current_row_id).next().find('textarea').eq(0); 

next sẽ nhận được anh chị em tiếp theo, và sau đó find sẽ tìm thấy tất cả các yếu tố trong tập phù hợp với thông qua trong selector (s), sau đó eq(0) sẽ lấy phần tử đầu tiên trong tập hợp kết quả trở về từ find.

+0

nếu tôi đang ở văn bản thứ hai, sẽ chạy điều này cho tôi văn bản đầu tiên của rowId3? – sarsnake

+1

Phương thức tiếp theo() dành cho anh chị em ruột. Nếu bạn chọn một hàng trong bảng, thì bạn sẽ không tìm thấy các phần tử văn bản trong số các anh chị em hoặc hàng. –

+0

Cảm ơn Jacob, rất hữu ích – sarsnake

5
$('#rowId2').find('textarea'); 

Đó sẽ tìm thấy cả trẻ em của hàng. Nếu bạn muốn là người đầu tiên, một trong hai:

$('#rowId2').find('textarea').eq(0); //jQuery object 
$('#rowId2').find('textarea')[0]; //DOM Element 

Sửa: Nếu bạn chỉ biết một hàng và muốn tìm textarea đầu tiên ở hàng tiếp theo:

$('#rowId').next().find('textarea').eq(0); 
+0

nếu tôi bắt đầu ở rowId và cần phải tìm textarea tiếp theo (có tại rowId2). tại thời điểm đó tôi không biết rowId2 – sarsnake

+0

nó sẽ nhanh hơn để tìm tất cả các textareas trên trang? – sarsnake

+2

@gnomixa Tôi không hiểu ý bạn là gì. Bạn sẽ cần phải rõ ràng hơn về những gì "tiếp theo" có nghĩa là. – Phrogz

1

Hãy thử điều này:

$("#rowID textarea:first-child").val() 
4
$textarea = $('#rowId textarea').eq(0); 

$nextarea = $textarea.closest('tr').next().find('textarea').eq(0); 

Chỉ cần làm rõ, $ .fn.next() tìm thấy bên cạnh anh chị em trong DOM.

  1. Bắt đầu từ textarea, đầu tiên bạn phải tìm nó mẹ-tr ( $ textarea.closest ('tr')).
  2. Từ đó, sử dụng tiếp theo để tìm tr tiếp theo (.next())
  3. Cuối cùng, tìm textarea đầu tiên trong vòng rằng tr ( .find ('textarea') eq. (0))
Các vấn đề liên quan