2012-01-16 32 views
16

tôi muốn sắp xếp bảng của mình với Trình cắm bảng jQuery Plugin. Vì vậy, tôi nhận được bảng này:Lỗi trình cắm thêm TableSorter jQuery trên init: không thể đọc thuộc tính '0' không xác định

<table id="stats" class="zebra-striped"> 
<thead> 
    <tr> 
    <th>Date</th> 
    <th>Annonce</th> 
    <th>Support</th> 
    <th>Nb Assoc.</th> 
    <th>Nb Transfo.</th> 
    <th>Cout</th> 
    </tr> 
</thead> 
<tbody> 
</tbody> 
</table> 

Vì vậy, như bạn có thể thấy bảng của tôi trống, chỉ có tiêu đề. Vì vậy, tôi init tablesorter với ô trống với:

$("table#stats").tablesorter({ sortList: [[0,0]]}); 

và immediatly tôi nhận được lỗi này:

jquery.tablesorter.min.js:4 Uncaught TypeError: Cannot read property '0' of undefined

FYI, có js của tôi nạp:

<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary --> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script> 
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script> 
<script src="js/bootstrap-dropdown.js"></script> 
<script src="js/bootstrap-scrollspy.js"></script> 
<script src="js/jquery.tablesorter.min.js"></script> 

Bất cứ ý tưởng tại sao tôi có được điều này và làm thế nào tôi có thể làm cho các plugin hoạt động trở lại?

Thx

+0

có vẻ như chức năng bảng phân đoạn của bạn không được tải chính xác, bạn có thể kiểm tra các tệp javascript được tải trong trang của mình không? – JoJa

+0

@JoJa: Chỉ cần kiểm tra. Có vẻ ổn. Tôi chỉnh sửa bài viết để bao gồm nó;) – Clawfire

+0

và nếu bạn đặt trong một trống với trống rỗng trong đó? – JoJa

Trả lời

15

Bạn cần có dữ liệu trong bảng trước khi có thể gọi phương thức sortList trên bảng. Điều này là do bạn áp dụng một chỉ mục trong phương pháp này mà sẽ không tìm thấy bất kỳ bản ghi nếu không có dữ liệu hiện tại và điều đó sẽ ném lỗi "Không thể đọc thuộc tính '0' của không xác định".

2

Tôi nhận thấy rằng điều này xảy ra với phiên bản mới nhất (2.0.5b, tôi nghĩ) được tìm thấy tại http://tablesorter.com/, nhưng nó không xảy ra trong các phiên bản trước (tôi có bản sao 2.0.3 và nó hoạt động cái đó). Tuy nhiên, có một phiên bản chia rẽ tại https://github.com/Mottie/tablesorter, được duy trì tốt hơn nhiều và không có lỗi này.

12

Nó không tốt sử dụng tablesorter khi có một bàn trống, vì vậy bạn có thể sử dụng điều kiện này:

if ($("table#stats tbody tr").length > 0) 
    $(this).tablesorter({ sortList: [[0,0]]}); 
7

Bạn không cần để có dữ liệu trong bảng. Chỉ cần initilize bảng của bạn theo cách đó:

$("table#stats").tablesorter(); 

Sau đó, sau khi bạn đã chèn dữ liệu trong bảng, bạn phải nói để cắm các bảng đã được cập nhật và sắp xếp nó:

$("table#stats").trigger("update"); 
var sorting = [[0,0]]; 
$("table#stats").trigger("sorton",[sorting]); 
2

tôi có một lỗi "không thể đọc định dạng thuộc tính 'của không xác định". Trong trường hợp của tôi, lỗi xảy ra do số 'td' trong 'tbody' khác trong 'thead'

3

Tôi không thể thực hiện bất kỳ thao tác nào trong số này để tôi đặt thời gian chờ trên khởi tạo cho bộ ...

setTimeout(function() {$('table').tablesorter();}, 10000); 
+1

Đó là người duy nhất trong số hàng tá bài đăng trên stackoverflow đã làm cho các trick cho tôi;) Cảm ơn! – baraka

+0

hoạt động nhưng đôi khi chỉ có thể hoạt động ... – anonymous5671

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