我认为我在这里缺少一些简单而明显的东西 - 我正在开发一个网站,我需要过滤投资组合类别,并在链接点击上显示类别说明,但不是“全部”列表项目。
页面加载正常,然后我可以很好地点击和过滤类别/描述,但是如果你点击回“全部”,最后点击的内容的类别描述仍然保留,即使它应该隐藏。
这是开发网站(Wordpress) - http://foothilltile.com/dev/products/
以下是相关代码:
<ul class="filter-nav">
<li>
<h4><?php _e("Filter:", "elemis"); ?></h4>
</li>
<li class="selected-1 all"><a href="#" data-value="all">
<h4><?php _e("All", "elemis"); ?></h4>
</a></li>
<?php
$categories= get_categories('taxonomy=kind&orderby=id');
foreach ($categories as $cat) {
$input = '<li><a href="#" data-value="'.$cat->category_nicename.'" class="'.$cat->category_nicename.'"><h4>';
$input .= $cat->cat_name;
$input .= '</h4></a></li>';
echo $input;
}
?>
</ul>
<div class="clear"></div>
<!-- End Portfolio Navigation -->
<div id="category-descriptions">
<ul class="descriptions-list">
<li class="all"></li>
<?php
$categories= get_categories('taxonomy=kind&orderby=id');
foreach ($categories as $cat) {
$input = '<li class="cat-desc '.$cat->category_nicename.'">';
$input .= $cat->description;
$input .= '</li>';
echo $input;
}
?>
</ul>
</div> <!--/category-descriptions -->`
然后是js:
jQuery(document).ready(function($) {
$('.filter-nav li a').click(function() {
// fetch the class of the clicked item
var ourClass = $(this).attr('class');
if (ourClass == 'all') {
// this should hide the li's on load - but doesn't?
$('.descriptions-list').children('li.cat-desc').hide();
}
else {
// hide all elements that don't share ourClass
$('.descriptions-list').children('li:not(.' + ourClass + ')').hide();
// show all elements that do share ourClass
$('.descriptions-list').children('li.' + ourClass).show();
}
return false;
});
});
唯一相关的css是li.cat-desc设置为display:none。
任何建议将不胜感激。我总是混淆jQuery中的代码顺序(肯定是noob),所以提前感谢你的帮助。
答案 0 :(得分:0)
“全部”的主播没有“全部”等级......这就是问题所在。该类设置为 锂元素... 将类添加到a元素,它应该是工作
答案 1 :(得分:0)
点击事件已分配给锚标记a
,因此$(this).attr('class');
将引用锚标记类属性。所以不应该这样,你应该尝试这个
var ourClass =$(this).parent("li").attr('class');
或可能只是
var ourClass =$(this).parent().attr('class');