2009-05-24 10 views
2

以下のコードは最初のdivでのみ動作します。私は他の "img"をクリックしたときに他のdivを表示することはできません。 2番目(次の)要素に到達する方法を知っていますか?イメージをクリックしたときにJQUERYで2番目の要素を選択する方法は?

$(document).ready(function() { 

     $('.imgOpenClose').click(function() { 
      if ($(this).attr("src") == "images/openTree.gif") { 
       $(this).attr("src", "images/closeTree.gif"); 
       $(this).parent().find('div').eq(0).show(); 
      } 
      else { 
       $(this).attr("src", "images/openTree.gif"); 
       $(this).parent().find('div').eq(0).hide(); 
      } 
     }); 
}); 

Wanna open table when i clicked on plus images

And wanna see the table inside this div

+0

は、あなたが欲しいのページの私たちにいくつかの例HTMLを与えることができますあなたのjavascriptを実行するには?そうでなければ、あなたの質問は詳細に欠けており、私たちは本当にあなたを助けることはできません。 – rampion

答えて

2

あなたがイメージ次のブレーク要素を持っているので、あなたはnextAllを使用し、代わりに、単に私のようにフィルタをnextを使用しての最初のDIVを選択する必要があります元の答え。あなたは同じクラスタグを有する複数の画像を持っている場合、あなたはまだ一意のIDを追加することなく、それを行うことができます

$('.imgOpenClose').click(function() { 
    $(this).nextAll('div:first').toggle(); 
}); 
+0

代わりに、$(this).next( 'div')にする必要はありませんか? – markusk

+0

@markusk - 良いキャッチ、私はDIVがすべて同じレベルにあると思った。 – tvanfosson

+0

alert($(this).next( 'div').html()); =>返品する – uzay95

1

$(function() { 
    $('.imgOpenClose').click(function() { 
     $(this).next('div').children('table').toggle(); 
    }); 
}); 
+0

テーブルの前にdivが表示プロパティを持っていないので。その理由は、私はdivタグを切り替える必要があります。 ただし、 アラート($(this).next( 'div').html()); はnullを返します。なぜjqueryは次のdivを見つけることができませんでしたか? – uzay95

+0

次は、次の兄弟のみです。 divでなければnullになります。次のフィルタは次の兄弟だと言うことができますが、それがdivの場合のみです。 – redsquare

関連する問題