Drupal 7 + jQuery,如何让 jQuery 只与活动节点交互(通过 nid)而不是列表中的每个节点
Posted
技术标签:
【中文标题】Drupal 7 + jQuery,如何让 jQuery 只与活动节点交互(通过 nid)而不是列表中的每个节点【英文标题】:Drupal 7 + jQuery, how to get jQuery to interact only with the active node (via nid) and not every node in the list 【发布时间】:2012-10-24 16:42:07 【问题描述】:我一直在寻找很长一段时间没有任何运气的主题,如果我错过了一个较旧的线程,请指出正确的方向。
我想要达到的目标:
拥有多个节点的常规视图并通过在节点内按下按钮(或其他任何东西)使 jQuery 以任何方式与该特定节点交互。前任。使隐藏的 div 出现。
我面临的问题对于初学者来说,我仍然发现很难将 jQuery 与 D7 一起使用。我之前使用 jQ 已经很长时间了,但是当它与 D7 一起使用时,我遇到了很大的问题。
最大的问题 ...是一旦我让 jQ 工作,它会影响列表/提要中的每个可见节点,因为我通过 div id 或类调用函数。我理解为什么会发生这种情况,但我不知道如何让 jQ 仅对按下按钮的节点产生影响。
这是迄今为止我在节点模板中针对特定内容类型所拥有的内容:
<script type="text/javascript">
(function ($)
$('.up2').click(function ()
$('.nummer_dark').text(parseInt($('.nummer_dark').text())+1,0).toFixed(2);
$('.up2').toggle();
);
$('.up').one('click', function()
$('.flag-link-toggle').click();once();
);
)(jQuery);
</script>
这只是一个示例,我试图通过按下具有 up2-class 的对象来增加跨度内的数字,并通过按下具有 up-class 的对象来切换标志。
第一个代码有效,但数字增加了小数(2.453、3.4123 等),而不是我计划的 1、2、3、4。但主要问题是这两个代码都对列表中的每个节点产生影响。我知道这是因为列表中的每个节点都具有相同的节点模板,因此具有相同的类,但是 我想找到一个在 jQ 中使用 node-id 的解决方案。
任何领先的答案都会拯救我的一天! =)
【问题讨论】:
【参考方案1】:我会使用.closest()
和.find()
方法。这将允许您仅定位包含刚刚单击的按钮的父节点,以便您可以仅查找和更改该节点的子元素。这是一些快速的伪代码,展示了它是如何工作的。
$('.up2').click(function()
$(this).closest('.node').find('.nummer_dark').text();
【讨论】:
尝试在click函数中添加console.log($(this).closest('.node'));
,看看它是否至少找到了父节点。
你能确认.node
类实际上是在你的View
的父节点元素上吗?更好的类可能是.views-row
。
好吧,在不知道视图结构的情况下很难给出准确的代码。但是进入.closest()
调用的类必须是第一个元素中的一个类,该元素包含按钮和您想要在按钮按下期间对其进行操作的元素。假设您在视图中使用默认类,我相信.views-row
是一个安全的选择。我使用我在此处发布的相同技巧:nextawards.org/awardees/2012 用于可扩展的“阅读更多”div。
现在它适用于每个节点。谢谢您,先生,您为我节省了很多时间!以上是关于Drupal 7 + jQuery,如何让 jQuery 只与活动节点交互(通过 nid)而不是列表中的每个节点的主要内容,如果未能解决你的问题,请参考以下文章