使用jQuery对类进行排序
我创建了jQuerySorter插件,如下所示,用于按类过滤。但是现在我不知道如何在默认情况下只显示使用jQuery对类进行排序,jquery,Jquery,我创建了jQuerySorter插件,如下所示,用于按类过滤。但是现在我不知道如何在默认情况下只显示class=“apple”。现在当我重新加载页面时,苹果和树都是可见的 <ul> <li class="apple">APPLE</li> <li class="tree">TREE</li> <li class="apple tree">ALL</li> </ul> <div>
class=“apple”
。现在当我重新加载页面时,苹果和树都是可见的
<ul>
<li class="apple">APPLE</li>
<li class="tree">TREE</li>
<li class="apple tree">ALL</li>
</ul>
<div>
<div class="apple">APPLE</div>
<div class="tree">TREE</div>
<div class="apple">APPLE</div>
<div class="tree">TREE</div>
<div class="apple">APPLE</div>
<div class="tree">TREE</div>
</div>
<script src="/js/jquery.min.js"></script>
<script type="text/javascript">
$("ul li").click(function() {
visibleClasses = $(this).attr("class").split(" ");
$("div div").hide(); // or slideUp / fadeOut
for(i in visibleClasses) {
$("div div."+visibleClasses[i]).fadeIn(500); // or slideDown / show
}
});
</script>
苹果
树
- 所有
苹果
树
苹果
树
苹果
树
$(“ul li”)。单击(函数(){
visibleClasses=$(this.attr(“class”).split(“”);
$(“div div”).hide();//或滑动/淡出
对于(i在VisibleClass中){
$(“div div.”+visibleClasses[i]).fadeIn(500);//或向下滑动/显示
}
});
将以下内容添加到脚本末尾:
$("div div").hide();
$("div div.apple").show();
将以下内容添加到脚本末尾:
$("div div").hide();
$("div div.apple").show();
用以下方法隐藏所有非苹果:
$("div div:not(.apple)").hide();
与其迭代数组,不如构造一个选择器,一次获取所有元素:
var selector = "div div." + visibleClasses.join(",div div.");
选择器
将包含“div div.apple,div div.tree”
,它将选择与逗号分隔选择器匹配的元素。然后,您可以执行以下操作:
$(selector).fadeIn(500);
编辑:因此,通过此更改,您的代码将如下所示:
<script type="text/javascript">
$(function () {
$("div div:not(.apple)").hide();
$("ul li").click(function() {
var visibleClasses = $(this).attr("class").split(" ");
$("div div").hide();
var selector = "div div." + visibleClasses.join(",div div.");
$(selector).fadeIn(500);
});
});
</script>
$(函数(){
$(“div div:not(.apple)”).hide();
$(“ul li”)。单击(函数(){
var visibleClasses=$(this.attr(“类”).split(“”);
$(“div div”).hide();
var selector=“div div.”+visibleClasses.join(“,div div.”);
$(选择器).fadeIn(500);
});
});
顺便说一下,如果您选择迭代数组,请使用常规的
for
循环或。for..in
语句用于枚举,而不是迭代。隐藏所有非苹果:
$("div div:not(.apple)").hide();
与其迭代数组,不如构造一个选择器,一次获取所有元素:
var selector = "div div." + visibleClasses.join(",div div.");
选择器
将包含“div div.apple,div div.tree”
,它将选择与逗号分隔选择器匹配的元素。然后,您可以执行以下操作:
$(selector).fadeIn(500);
编辑:因此,通过此更改,您的代码将如下所示:
<script type="text/javascript">
$(function () {
$("div div:not(.apple)").hide();
$("ul li").click(function() {
var visibleClasses = $(this).attr("class").split(" ");
$("div div").hide();
var selector = "div div." + visibleClasses.join(",div div.");
$(selector).fadeIn(500);
});
});
</script>
$(函数(){
$(“div div:not(.apple)”).hide();
$(“ul li”)。单击(函数(){
var visibleClasses=$(this.attr(“类”).split(“”);
$(“div div”).hide();
var selector=“div div.”+visibleClasses.join(“,div div.”);
$(选择器).fadeIn(500);
});
});
顺便说一下,如果您选择迭代数组,请使用常规的
for
循环或。for..in
语句用于枚举,而不是迭代。FYI,使用for(visibleClasses中的i)迭代数组是不安全的,因为i
是一个隐式全局变量,并且不应该使用for(x in y)
迭代数组(因为它也迭代属性)。您应该这样做:for(var i=0;i
并且您应该对局部变量使用var
,这样它们就不是隐式全局变量。仅供参考,使用for(visibleClasses中的i)迭代数组不是安全的做法
这两个原因都是因为i
是一个隐式全局变量,并且不应该使用for(x in y)
来迭代数组(因为它也迭代属性)。您应该这样做:for(var i=0;i
并且您应该在局部变量上使用var
,这样它们就不是隐式全局变量。谢谢您的提示,但我对javascript还是新手,还在学习。我将如何在我的代码中实现这一点?谢谢你的提示,但我对javascript还不熟悉,还在学习。我将如何在代码中实现这一点?