ヘッダーとして月を持つテーブルがあります。月をクリックすると、対応するヘッダーのすべての tds に週が表示されます。これにはトグルを使用しています。新しいヘッダーをクリックしたときに、他の要素を元に戻すにはどうすればよいですか?
ここにフィドルがあります。ここでは、最初のクリックの後、ジョブを実行するのに 2 回のクリックが必要です。何がうまくいかないのですか?これを行うための他の簡潔な方法はありますか。
このようなもの?
$(document).ready(function() {
$('th').click(
function() {
// hide all expanded
$('#ex td #td_data').show();
$('#ex td #o_data').hide();
// show only corresponding weeks
$('#ex td:nth-child(' + ($(this).index() + 1) + ')').each(function(index) {
$(this).find('#td_data').hide();
$(this).find('#o_data').show();
});
});
});
編集:
@サミ-私はあなたの要件を今得ていると思います...
ここでmodifieフィドルを確認してください-http ://jsfiddle.net/johnbk/JYkS6/
->#o_dataのcssを削除しました
->各要素のIDは一意である必要があります-代わりにこれをクラスに変更しました
->上記のコードを以下のように変更しました
$('.o_data').hide();
$('.td_data').show();
$('th').click(
function() {
var id = $(this).index() + 1;
//loop through corresponding tds and display data
$('#ex td:nth-child(' + id + ')').each(function(index) {
$(this).find('.td_data').toggle();
$(this).find('.o_data').toggle();
});
//reset everything else
$('#ex td').not(':nth-child(' + id + ')').each(function(index) {
$(this).find('.td_data').show();
$(this).find('.o_data').hide();
});
});
$('th').click(function(){
var i = $('th').index(this);
$('tr').each(function(index){
var x = $(this).children('td').eq(i).find('div').eq(0);
var y = $(this).children('td').eq(i).find('div').eq(1);
$(x).toggle();
$(y).toggle();
});
});
JavaScript
$(document).ready(function(){
$("th").click(function(){
var myClass = $(this).attr("class");
$(".col"+myClass).toggle();
});
});
HTML
<table id='ex' border='1'>
<thead>
<tr>
<th class="1">Jan</th>
<th class="2">Feb</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div id="td_data">#11</div>
<div id="o_data" class="col1">
<span>Week1</span><span>Week2</span><span>Week3</span><span>week4</span>
</div>
</td>
<td>
<div id="td_data">#12</div>
<div id="o_data" class="col2"><span>Week1</span><span>Week2</span><span>Week3</span><span>week4</span></div>
</td>
</tr>
<tr>
<td>
<div id="td_data">#21</div>
<div id="o_data" class="col1"><span>Week1</span><span>Week2</span><span>Week3</span><span>week4</span>
</div>
</td>
<td>
<div id="td_data">#22</div>
<div id="o_data" class="col2">
<span>Week1</span><span>Week2</span><span>Week3</span><span>week4</span></div>
</td>
</tr>
</tbody>
</table>