2010-07-06 29 views
13

Tôi cố gắng để thực hiện một chức năng trên jquery DataTable, mà trả về 1 và cột thứ 4 của một hàng nhấpJQuery DataTable thoại di động từ một dãy nhấp

tôi đang theo ví dụ này, cho phép tôi để thao tác một nhấp hàng http://datatables.net/examples/api/select_single_row.html

suy nghĩ rằng tôi có thể thay đổi điều khiển này để làm thủ tục giá trị của ô đọc và sử dụng giá trị trên logic của riêng tôi

/* Add a click handler to the rows - this could be used as a callback */ 
$("#example tbody").click(function(event) { 
    $(oTable.fnSettings().aoData).each(function(){ 
     $(this.nTr).removeClass('row_selected'); 
    }); 
    $(event.target.parentNode).addClass('row_selected'); 
}); 

tôi cũng đã đi qua với rất ít đoạn mã fr này om dataTable diễn đàn http://datatables.net/forums/comments.php?DiscussionID=1384&page=1#Item_0

$('#example tbody tr').click(function() { 
    // Alert the contents of an element in a SPAN in the first TD 
    alert($('td:eq(0) span', this).html()); 
}); 

Tôi có thể có con trỏ để tôi có thể lấy cột thứ nhất và thứ 4 của trường được nhấp không?

phần tiếp theo Tôi có giải quyết trên, nhờ nick

tuy nhiên tôi có phần tiếp theo của vấn đề. khi tôi init bảng tôi sử dụng

/* Init the table */ 
    oTable = $('#filetable').dataTable({ 
     "bProcessing": true, 
     "bServerSide": true, 
     "sAjaxSource": "/crvWeb/jsonFileList.do", 
     "fnServerData": function (sSource, aoData, fnCallback) { 
      $.ajax({ 
       "dataType": 'json', 
       "type": "POST", 
       "url": sSource, 
       "data": aoData, 
       "success": fnCallback 
      }); 
     } 
    }); 

servlet của tôi phải mất một tham số yêu cầu dir và trả về một danh sách để DataTable như phản ứng json.

/crvWeb/jsonFileList.do 

làm cách nào để thêm và nhận phản hồi serlvet với yêu cầu đăng vì vậy tôi có thể cập nhật bảng của mình?

Trả lời

25

Bạn có thể sử dụng .delegate() dễ nhất ở đây, như thế này:

$("#example tbody").delegate("tr", "click", function() { 
    var firstCellText = $("td:first", this).text(); 
    var fourthCellText = $("td:eq(3)", this).text(); 
}); 

You can try out a demo here

Với .delegate()this đề cập đến <tr> vì đó là nhấp chuột chúng tôi đang xử lý, làm cho mọi thứ khá sạch .. và nó vẫn chỉ có một trình xử lý sự kiện ở cấp độ <tbody>, không phải là một cho mỗi <tr>.

+0

một câu hỏi tiếp theo khác. nếu tôi muốn vượt qua giá trị vào lưới điện để cập nhật nó, làm thế nào tôi nên làm điều đó để sử dụng chức năng của bài viết để cập nhật bảng trên bay? – nokheat

+0

@nokheat - Ý của bạn là gì? Nếu bạn có thể mô tả thêm một chút về nơi mà các giá trị đến và đi tôi có thể giúp ... Tôi phải sụp đổ cho ban đêm, nhưng trả lời ở đây và tôi sẽ kiểm tra nó vào buổi sáng :) –

+0

tôi cần hiển thị một số phân đoạn mã vì vậy hãy tham khảo bài viết mới của tôi – nokheat

0

này nên làm như lừa, nếu tôi đọc mã của bạn một cách chính xác:

$("tr.row_selected td:nth-child(1), tr.row_selected td:nth-child(4)"); 

Cần trả lại đứa con đầu lòng và thứ tư của tất cả các yếu tố tr với lớp row_selected.

+0

tôi đang kiểm tra mã của tôi và giải pháp của bạn tuy nhiên tôi vẫn đang cố gắng giải quyết nó. các convern chính là, tôi có thể thực sự tham khảo từ đầu vào xử lý? như $ ("# example tbody") và sử dụng số nhận dạng này để nhận tham chiếu ô và do đó giá trị của nó? – nokheat

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