2012-04-11 46 views
0

當我在drupal視圖中單擊一個節點時,它會切換視圖中每個節點的正文,而不僅僅是我單擊的節點。我怎樣才能讓jquery切換我點擊的節點?這是我的節點模板頭(node-type.tpl.php)中的代碼jquery - 如何在drupal視圖中僅影響一個節點

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

並且要切換正文的代碼。

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

目前,它與切換在我的整個觀點,而不是隻在節點其中我一下班「更」每格。我如何限制它只是點擊節點?

如果一次只打開身體,我也會喜歡它。即;當單擊不同的節點時,前一個節點的主體切換關閉。

我敢肯定它可能很容易,但我似乎無法推測出來......

+0

這將有助於查看最終的HTML而不是PHP代碼。 – 2012-04-12 00:01:53

回答

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 Tabs。

+0

以下是我在第一個選項中遇到的錯誤; '$(this).closest不是函數 [Break On This Error] $(this).closest(「。more」)。show();' – Meggy 2012-04-13 16:44:08

+0

你使用的是什麼版本的jQuery? – 2012-04-13 17:12:57

+0

我不認爲第一個選項是你想要的。 '.more'是你的按鈕嗎?如果是這樣,它將被隱藏......我想我需要知道你的html結構(包括按鈕)是什麼樣的。 – 2012-04-13 17:15:59

相關問題