次のHTMLコードに似た一連のテーブルがあります。
<table id="film"><tr>
<th class="1">//HEAD CONTENT 1//</th>
</tr>
<tr>
<td class="1">//BODY CONTENT 1//</td>
</tr></table>
<table id="film"><tr>
<th class="2">//HEAD CONTENT 2//</th>
</tr>
<tr>
<td class="2">//BODY CONTENT 2//</td>
</tr></table>
それぞれのヘッド(<th>
)をクリックします。さらに、テーブルは拡張されていない状態で開始する必要があります。次のjQueryスクリプトを使用します。
$(document).ready(function(){
$('#film td').hide();
});
$(document).ready(function(){
var n1 = 0;
$('#film th.1').click(function(){
if(n1 == 0){
$('#film td.1').show();
n1 = 1;
}else{
$('#film td.1').hide();
n1 = 0;}
});
var n2 = 0;
$('#film th.2').click(function(){
if(n2 == 0){
$('#film td.2').show();
n2 = 1;
}else{
$('#film td.2').hide();
n2 = 0;}
});
});
しかし、実行すると、一番上のテーブルだけが2番目のテーブルではなく表示/非表示になります。誰かが私が間違っているところを見ることができますか?
複数の要素で同じIDを使用しています。 IDで検索すると、jQueryは1つのアイテム(そのIDを持つ最初のアイテム)のみを返します。したがって、コードは最初のテーブルでのみ機能します。 IDの代わりにテーブルのクラスを使用します。
<table class="film">......</table>
$('.film').each(function(f) {
//this function will execute for each element with the class "film"
//refer to the current element during this function using "$(this)"
});
これを行うはるかに簡単な方法は、table
値のIDの代わりにクラスを使用することです。これにより、グループとしてより簡単に参照できます
<table class="film"> ...
その後、次のjqueryはあなたが探している動作を提供するはずです
$(document).ready(function() {
$('.film td').hide();
$('th').click(function() {
$(this).parents('table').find('td').toggle();
});
});
ここに作業バージョンがあります: http://jsfiddle.net/6Ccj7/
あなたのhtmlは壊れています。これを変える:
<td class"2">//BODY CONTENT 2//</td>
これに:
<td class="2">//BODY CONTENT 2//</td>
また、実際に2つのインスタンスがある場合、film
にidを使用しました。代わりにクラスを作成します。
<table class="film"><tr>
<th class="1">//HEAD CONTENT 1//</th>
</tr>
<tr>
<td class="1">//BODY CONTENT 1//</td>
</tr></table>
<table class="film"><tr>
<th class="2">//HEAD CONTENT 2//</th>
</tr>
<tr>
<td class="2">//BODY CONTENT 2//</td>
</tr></table>
更新されたJSは次のとおりです。
$(document).ready(function(){
$('.film td').hide();});
$(document).ready(function(){
var n1 = 0;
$('.film th.1').click(function(){
if(n1 == 0){
$('.film td.1').show();
n1 = 1;
}else{
$('.film td.1').hide();
n1 = 0;}
});
var n2 = 0;
$('.film th.2').click(function(){
if(n2 == 0){
$('.film td.2').show();
n2 = 1;
}else{
$('.film td.2').hide();
n2 = 0;}
});
});
jqueryでテーブルを表示/非表示
コード here! 私はuseslideToggle + data attr
2つの問題:
まず、HTMLが壊れています
変化する
<td class"2">//BODY CONTENT 2//</td>
に
<td class="2">//BODY CONTENT 2//</td>
次に、HTML IDは一意である必要があるため、代わりにクラスを使用することをお勧めします。
これが実際の例です: http://jsfiddle.net/jkohnen/tBkh4/
.toggle()を使用してjQueryを少し簡略化しました
それが役に立てば幸い、そしてハッピーコーディング。
このjQueryを使用すると、表示と非表示を切り替えることができます
$("#hide").click(function(){
$("p").hide();
});
$("#show").click(function(){
$("p").show();
});
html
<button id="hide">Hide</button>
<button id="show">Show</button>