我已经看到这个(显然)与此处解决的完全相同的问题,但该解决方案根本不适合我。我似乎无法选择我希望显示/隐藏的元素。
我有以下 HTML,重复了几个类似的项目:
<div class="item">
<div class="titleRow">
<h3 class="yesterday">Some text</h3>
<h3 class="today">Some other text</h3>
</div>
</div> <!-- /item (table) -->
<div class="details">
<p>A long paragraph of description.</p>
</div>
而这个JS:
$('.details').hide();
$('body.page-id-55 .titleRow').toggle(
function() {
$(this).parent().next('.details').slideDown();
$(this).addClass('close');
},
function() {
$(this).parent().next('.details').slideUp();
$(this).removeClass('close');
}
)
我的理解是,由于正在单击 .titleRow ,并且 .details 是其父级(.item)的下一个兄弟,因此 .details 应该是目标,并在单击 .titleRow div 时向下和向上滚动。
但实际上什么也没发生。
如果我将该行更改为
$('.details').slideDown();
它可以工作,但当然 .details 的所有实例都会上下滚动。我只想在单击的 div 之后激活下一个。
我究竟做错了什么?
更新:
即使有andyface的好建议,点击时我仍然没有任何动作。我什至试过这个:
$('body.page-id-55 .titleRow').on('click', function() {
$details = $(this).parent().next('.details');
$details.show();
});
(我会假设)强制所有 .details 简单地变得可见 - 但也没有任何反应。
我页面上其他 JS 的可能干扰?
似乎树遍历仍然是问题,因为如果我这样做:
$('body.page-id-55 .titleRow').on('click', function() {
$('.details').show();
});
他们都出现了。
至于其他正在加载的 javascripts 的潜在冲突,我至少可以确认我的 js 是最后一个被加载的,因为我使用正确的 WordPress 排队方法通过 functions.php 加载它。这是标题中的所有 js - 我的两个(一个用于另一页)是最后一个:
<script type='text/javascript' src='http://gazeleyandgazeley.com/site/wp-includes/js/jquery/jquery.js?ver=1.11.0'></script>
<script type='text/javascript' src='http://gazeleyandgazeley.com/site/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>
<script type='text/javascript' src='http://gazeleyandgazeley.com/site/wp-content/themes/twentythirteen-child/js/sidebarfix.js?ver=9.9.9'></script>
<script type='text/javascript' src='http://gazeleyandgazeley.com/site/wp-content/themes/twentythirteen-child/js/gteam.js?ver=9.9.9'></script>
<script type='text/javascript' src='http://gazeleyandgazeley.com/site/wp-content/themes/twentythirteen-child/js/rolldowns.js?ver=9.9.9'></script>
首先加载它,还是在文档末尾加载,会有所不同吗?似乎因为遍历是唯一“不”工作的东西,所以它与另一个 js 冲突无关......但话又说回来,我真的什么都不知道。8^)