jQuery 可过滤组合:不加载所有
我对如何工作感到困惑,因此并非所有
项目都会在页面刷新时加载。过滤对于
项目都会显示,而不仅仅是过滤后的项目。
“过滤器”中的每个链接选择都可以正常工作,但在页面重新加载时,所有
代码来自 http://net。 tutsplus.com/tutorials/javascript-ajax/creating-a-filterable-portfolio-with-jquery/
HTML:
<div id="container">
<li>home.com</li>
<ul id="filter">
<li><a href="#">books</a></li>
<li><a href="#">essays</a></li>
<li><a href="#">film</a></li>
</ul>
<ul id="portfolio">
<li class="books"><a href="#"><img src="images/one.gif" alt="" height="120" width="200" />Book One</a></li>
<li class="books"><a href="#"><img src="images/two.gif" alt="" height="120" width="200" />Book Two</a></li>
<li class="essays"><a href="#"><img src="images/three.gif" alt="" height="120" width="200" />Essay One</a></li>
<li class="essays"><a href="#"><img src="images/four.gif" alt="" height="120" width="200" />Essay Two</a></li>
<li class="film"><a href="#"><img src="images/five.gif" alt="" height="120" width="200" />Film One</a></li>
<li class="film"><a href="#"><img src="images/six.gif" alt="" height="120" width="200" />Film Two</a></li>
</ul></div>
JS:
$(document).ready(function() {
$('ul#filter a').click(function() {
$(this).css('outline','none');
$('ul#filter .current').removeClass('current');
$(this).parent().addClass('current');
var filterVal = $(this).text().toLowerCase().replace(' ','-');
if(filterVal == 'all') {
$('ul#portfolio li.hidden').fadeIn('slow').removeClass('hidden');
} else {
$('ul#portfolio li').each(function() {
if(!$(this).hasClass(filterVal)) {
$(this).fadeOut('normal').addClass('hidden');
} else {
$(this).fadeIn('slow').removeClass('hidden');
}
});
}
return false;
});
});
I'm puzzled on how to work this so not all of the <li>
items load on a page refresh. The filtering works fine on each link selection in the <ul>
"filter", but on a page reload, all <li>
items show, not just the filtered.
Code is from http://net.tutsplus.com/tutorials/javascript-ajax/creating-a-filterable-portfolio-with-jquery/
HTML:
<div id="container">
<li>home.com</li>
<ul id="filter">
<li><a href="#">books</a></li>
<li><a href="#">essays</a></li>
<li><a href="#">film</a></li>
</ul>
<ul id="portfolio">
<li class="books"><a href="#"><img src="images/one.gif" alt="" height="120" width="200" />Book One</a></li>
<li class="books"><a href="#"><img src="images/two.gif" alt="" height="120" width="200" />Book Two</a></li>
<li class="essays"><a href="#"><img src="images/three.gif" alt="" height="120" width="200" />Essay One</a></li>
<li class="essays"><a href="#"><img src="images/four.gif" alt="" height="120" width="200" />Essay Two</a></li>
<li class="film"><a href="#"><img src="images/five.gif" alt="" height="120" width="200" />Film One</a></li>
<li class="film"><a href="#"><img src="images/six.gif" alt="" height="120" width="200" />Film Two</a></li>
</ul></div>
JS:
$(document).ready(function() {
$('ul#filter a').click(function() {
$(this).css('outline','none');
$('ul#filter .current').removeClass('current');
$(this).parent().addClass('current');
var filterVal = $(this).text().toLowerCase().replace(' ','-');
if(filterVal == 'all') {
$('ul#portfolio li.hidden').fadeIn('slow').removeClass('hidden');
} else {
$('ul#portfolio li').each(function() {
if(!$(this).hasClass(filterVal)) {
$(this).fadeOut('normal').addClass('hidden');
} else {
$(this).fadeIn('slow').removeClass('hidden');
}
});
}
return false;
});
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您正在尝试在页面重新加载时传递过滤器吗?如果是,您可以传递 url 中的变量,或使用 cookie。
You are trying to pass on the filter on a page reload? If yes, you could either pass on the variable in the url, or use cookies.