2011-06-28 4 views

答えて

1

私は強くないは、あなたのテーブルには、常に隣接することになると仮定すると示唆しています。今のところかもしれませんが、何らかの理由でコードを移動する必要がある場合は、コードが破損します。

問題を解消して、テーブルの識別子をアンカー要素に格納します。 1つのオプションは、data attributesを使用してセレクタを保存することです。

<a href="#" data-target-table="#table1">Show me the table</a> 
<table id="table1" class="hidden"> 
    ... 
</table> 

、それは.data()

$('a').click(function() { 
    var $this = $(this); 
    var $table = $($this.data('targetTable')); 
    $table.something.slideDown(); 
}); 

代替を使用して取得するには、各要素に対して、共通のクラスを持っているし、テーブルを選択するためにそれを使用することです。

2

DOM内の同じレベルの要素にアクセスするには、.next()または.siblings()を使用します。だから、

あなたが使用することができ、あなたの例では:

$('a').click(function() { 
    $(this).siblings('table').slideDown(); 
}); 
+0

ああ、私は兄弟がliやtdのようにすべて同じタイプの要素であるという印象を受けていました。 –

+0

これは間違いなく.siblings()のユースケースですが、それよりも一般的です。 http://api.jquery.com/siblings/でさえ、段落タグに使用します。 –

+0

はい、ただし兄弟段落のみです。 –

3
$('a').click(function(){ 
    $(this).next().slideDown(); 
}); 
関連する問題