2013-05-29 4 views
0

У меня есть ячейка таблицы, в которой отображаются другие таблицы (с цветами фона). Внутренние таблицы не всегда отображаются; они могут быть скрыты с помощью кнопки (изменить класс с помощью jQuery). Теперь я хочу, чтобы внешняя ячейка всегда была заполнена цветом. Это означает, что если отображается только одна таблица, ее ширина должна быть 100%. Когда отображаются два, каждая ширина должна составлять 50% и т. Д. Как я могу это решить?Динамическая ширина таблицы

Вот пример:

... 
<td> 
<table class="show"><tr><td></td></tr></table> 
<table class=""><tr><td></td></tr></table> 
<table class="show"><tr><td></td></tr></table> 
</td> 
... 

В этом случае ширина должна быть 50%

+1

вы можете использовать JavaScript. – Arpit

+4

Он может использовать JavaScript? Приятно знать .. –

+0

Хорошо, поскольку ячейки таблицы приспосабливаются к их содержимому, общая ширина их содержимого составляет 100% по определению. Задача решена. –

ответ

0

Вы можете изменить значение ширины с Jquery.

var count_table = $(".show").length;   // count ".show" elements 

$(".show").each(function{     // iteration on each ".show" 
    var width = 100/count_table;    // % value of new width 
    $(this).css("width", width+"%");   // CSS modification 
}); 

Этот код только что адаптирован для одного элемента TD. Вам нужно повторять итерацию на каждом «td».

(я надеюсь, что я ответил на вашу проблему)

+0

Решение с длиной $ (". Show") кажется мне лучшим. Но когда я пытаюсь выполнить $ (". Event.show"). Length, я получаю 0 (даже если все таблицы имеют класс "event show") –

+0

$ (". Событие .show"). Должно работать с классом " шоу событий ". Возможно, вы забыли пространство. – nayfun

+0

Если функция была помещена в неправильном месте в моем коде. Все отлично работает сейчас, спасибо! –

0

Чтобы изменить ширину ваших элементов, которые вы можете использовать JQuery.

Here's the page explaining how.

+0

Поделитесь соответствующим кодом, не просто разместите ссылку. – Gabe

0

Вот еще один способ: http://jsfiddle.net/ypJDz/1

Немного слишком сложен для того, что вам нужно, но очень много возможности для расширения.

function resizeTables() { 
    var baby = $("td > table.show"), 
     amount = baby.length, 
     mother = $("body"); 

    baby.width(function() { 
     var w = mother.width()/amount; 
     return w; 
    }); 
} 

resizeTables(); 

$("button").click(function() { 
    var $this = $(this), 
     ID = $this.index() + 1; 

    $("td > table:nth-child(" + ID + ")").toggleClass("show"); 
    resizeTables(); 
}); 
Смежные вопросы