Jquery - 如何在 drupal 视图中只影响一个节点

Jquery - How to affect just one node in drupal view

本文关键字:影响 节点 一个 视图 drupal Jquery      更新时间:2023-09-26

当我单击drupal视图中的节点时,它会切换视图中每个节点的主体,而不仅仅是我正在单击的节点。如何让 jquery 只切换我正在单击的节点?这是我的节点模板头部的代码(node-type.tpl.php)

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

以及要切换的正文的代码。

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

目前,它在我的整个视图中切换每个带有类"more"的div,而不仅仅是在我正在单击的节点中。如何将其限制为仅单击的节点?

如果一次只打开身体,我也希望它。 即; 单击其他节点时,前一个节点的主体切换关闭。

我敢肯定这可能很容易,但我似乎无法弄清楚......

按钮相对于.more的位置在哪里?

如果按钮位于 .more 元素中,则需要执行以下操作:

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

如果按钮不是.more的父项或祖先,则需要执行更多操作。 如果按钮与.more元素的顺序相同(并且没有任何不相关的按钮),则可以执行以下操作:

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

但是,最好使用idhref或一些jQuery数据将按钮链接到.more内容:

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

你可能想要 jQuery UI 选项卡 http://jqueryui.com/demos/tabs/或其他一些 jQuery 选项卡解决方案。