2012-04-11 5 views
0

drupalビューでノードをクリックすると、クリックしているノードではなく、ビュー内のすべてのノードのボディがトグルされます。私がクリックしているノードだけをjqueryで切り替えるにはどうすればいいですか?ここに私のノードテンプレート(ノード-type.tpl.php)Jupiter - drupalビューでただ1つのノードに影響する方法

<script> 
$("button").click(function() { 
$(".more").toggle(); 
}); 
</script> 

と切り替えるべき身体のコードの頭の中で私のコードです。

<div class="more"><?php print $node->content['body']['#value']; ?></div> 

現在、それは私の全体のビューではなく、ちょうど私がクリックしていたノードでクラス「もっと」を持つすべてのdivを切り替えます。クリックしたノードだけに制限するにはどうすればよいですか?

一度に一人の人が開いていれば嬉しいです。すなわち、別のノードがクリックされると、前のノードの本体が閉じられます。

私はそれはおそらく簡単だと確信していますが、私はちょうどそれを把握するように見えることはできません...

+0

PHPコードではなく、最終的なHTMLを見るのに役立ちます。 –

答えて

1

どこ.moreに対するボタンがありますか?

ボタンは、あなたがこのような何かをしたい、.more要素である場合:

$("button").click(function() { 
    $('.more').hide(); 
    $(this).closest(".more").show(); 
}); 

ボタンが.moreの親または祖先ではない場合、あなたはもう少しを行う必要があります。ボタンが.more要素と同じ順序である(と無関係なボタンが存在しない)場合は、この操作を行うことができます。

$("button").click(function() { 
    $('.more').hide(); 
    $('.more').eq($('button').index($(this))).show(); 
}); 

をただし、あなたが持つ.moreコンテンツへのリンクボタンオフに優れていますidhref、またはいくつかのjQueryのデータ:

<button class='morebutton' data-more="#more1">Button 1</button> 
<button class='morebutton' data-more="#more2">Button 2</button> 
<div class='more' id="more1">More Number 1</div> 
<div class='more' id="more2">More Number 2</div> 

スクリプト:

$(".morebutton").click(function() { 
    $('.more').hide(); 
    $($(this).data('more')).show(); 
}); 

デモ:http://jsfiddle.net/jtbowden/EfUxt/

jQuery UIタブなど、このような状況に役立つライブラリがあります。

+0

ここでは、最初のオプションでエラーが発生しました。 '$(this).closestは関数ではありません。 [このエラーのブレーク] $(this).closest("。more ")。show();' – Meggy

+0

あなたはどのバージョンのjQueryを使用していますか? –

+0

そして私は最初の選択肢はあなたが望むものだとは思わない。あなたのボタンは '.more 'の中にありますか?もしそうなら、それは隠されるでしょう...私はあなたのhtml構造(ボタンを含む)がどんなものかを知る必要があると思います。 –

関連する問題