2015-05-26 26 views
7

Tôi đã theo mã @ koala_dev trong this post để cố gắng khóa cột đầu tiên của bảng của tôi cuộn theo chiều ngang. Mã không may không có tác dụng trên bảng của tôi. Tôi đã tự hỏi nếu có ai có thể cho tôi một số gợi ý về những gì tôi đã làm sai như tôi mới để lập trình.Sửa Cột đầu tiên của Bảng Bootstrap

Đây là bàn của tôi: http://jsfiddle.net/mademoiselletse/bypbqboe/59/

Đây là mã tôi chèn trong JS (dòng 121-133):

$(function() { 
    var $tableClass = $('.table'); 
    // Make a clone of our table 
    var $fixedColumn = $tableClass.clone().insertBefore($tableClass).addClass('fixed-column'); 

    // Remove everything except for first column 
    $fixedColumn.find('th:not(:first-child),td:not(:first-child)').remove(); 

    // Match the height of the rows to that of the original table's 
    $fixedColumn.find('tr').each(function(i, elem) { 
     $(this).height($tableClass.find('tr:eq(' + i + ')').height()); 
    }); 
}); 

Đây là thuộc tính CSS (dòng 36-47) Tôi có chèn vào:

.table-responsive > .fixed-column { 
    position: absolute; 
    display: inline-block; 
    width: auto; 
    border-right: 1px solid #ddd; 
} 

@media(min-width:768px) { 
    .table-responsive>.fixed-column { 
     display: none; 
    } 
} 

điều duy nhất tôi đã đi trệch khỏi các demo code là tôi định nghĩa $('.table') như $tableClass thay vì $table vì trước đây tôi đã xác định var $table$('#table'). Giúp đỡ của bạn sẽ được nhiều đánh giá cao!

+0

Trong bản demo của bạn có này dòng var '$ tableClass = $ ('. table');' tức là bạn đang cố gắng lấy đối tượng bảng của bạn với tham chiếu đến lớp nhưng bạn đã đưa ra 'table' với' id' là 'table' và không phải' classN ame' như 'table' –

+0

Cảm ơn bạn đã chỉ ra! Tôi đã tham chiếu bảng theo ID thay vào đó nhưng tôi nhận được điều này: http://jsfiddle.net/mademoiselletse/bypbqboe/62/ Bạn có thể cho tôi biết một số gợi ý về lý do đó không? – Vic

+0

mã của bạn khá khó hiểu !! Tại sao bạn nhân bản 'table' và tại sao loại bỏ tất cả' table data' và 'table head' trừ cái đầu tiên? –

Trả lời

27

Ok .. Hủy bỏ tất cả các mã js của bạn và bạn có thể làm điều này với một số thủ thuật CSS như sau:

DEMO

CSS

.table > thead:first-child > tr:first-child > th:first-child { 
    position: absolute; 
    display: inline-block; 
    background-color: red; 
    height: 100%; 
} 

.table > tbody > tr > td:first-child { 
    position: absolute; 
    display: inline-block; 
    background-color: red; 
    height: 100%; 
} 

.table > thead:first-child > tr:first-child > th:nth-child(2) { 
    padding-left: 40px; 
} 

.table > tbody > tr > td:nth-child(2) { 
    padding-left: 50px !important; 
} 
+1

Thật tuyệt vời! Cảm ơn rất nhiều! – Vic

+0

Bất cứ lúc nào !! Happy Coding .. :) –

+1

Đây là một giải pháp tinh khiết-CSS tuyệt vời, đánh bại crap từ mớ hỗn độn của JS & CSS từ bài viết được tham chiếu khác. – wndxlori

1

$('#table') có nghĩa là yếu tố tìm kiếm của bạn theo id table.

$('.table') nghĩa là các yếu tố tìm kiếm của bạn theo lớp table.

Đây là các bộ chọn CSS bạn đã sử dụng trong css.

Trong trường hợp của bạn, bảng của bạn có id table để bạn có thể chọn bảng đó bằng cách sử dụng $('#table').

Và bạn không có bất kỳ phần tử html nào sử dụng lớp table, vì vậy bạn sẽ không nhận được gì khi bạn chọn sử dụng $('.table').

+0

Cảm ơn bạn đã chỉ ra rằng tôi không có lớp 'table'. Tôi nhận ra rằng tôi đặt 'table' bên trong' data-class'. Tôi đã làm theo lời khuyên của bạn và tham khảo bảng bằng ID của nó nhưng tôi nhận được điều này: http://jsfiddle.net/mademoiselletse/bypbqboe/62/ Các mã của tôi có xung đột không? – Vic

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