[英]when click on list item hide other items
I have prices in a list and I want to when clicking the price,hide the other range of prices 我在列表中有价格,我想在单击价格时隐藏其他价格范围
my list items has different class names one is item first or item last here is the html: 我的列表项具有不同的类名,一个是项目的第一项,最后是项目的html:
list to be clicked: 要单击的列表:
<h2>Filter By Price</h2>
<ol id="myAnchor">
<li><a id="0-20" href="#" >0.00 - 20.00</a></li>
<li><a id="20-50" href="#">20.00 - 50.00</a></li>
<li><a id="50-80" href="#" >50.00 - 80.00</a></li>
<li><a id="80-100" href="#">80.00 - 100.00</a></li>
<li><a id="All" href="#">All</a></li>
</ol>
the list that will be shown: 将显示的列表:
<ul class="box-content">
<?php endif ?>
<li id="<?php
$price= $_item->getPrice();
switch ($price)
{
case ($price<20):
echo "0-20";
break;
case ($price>20 && $price<50):
echo "20-50";
break;
case ($price>50 && $price<80):
echo "50-80";
break;
case ($price>80 && $price<100):
echo "80-100";
break;
} ?>" class="item<?php if (($i - 1) % $col == 0):?> first<?php elseif ($i % $col == 0): ?> last<?php endif; ?>">
javascript function: javascript功能:
(function(j$) {
j$("#myAnchor").click(function(e)
{
var id=e.target.id;
switch(id)
{
case("0-20"):
alert("something");
var a = document.getElementsByTagName('li')
var all_at_once = "";
for(i=0;i<a.length;i++){
// alert(a[i].childNodes[0].text());
//if(a[i].childNodes[0].id=="20-50" || a[i].childNodes[0].id=="50-80"||a[i].childNodes[0].id=="80-100")
// j$('.box-content ul li').hide();
//a[i].childNodes[0].style.display="none";
??????????? I don't knwo what to do in for loop
}
break;
}
}); //click anchor
})(jQuery);//ready
Just do this 做这个
$("#myAnchor li a").click(function(){
$("#myAnchor li").not($(this).parent()).hide();
});
Updated: 更新:
To hide price list based on selecting the range 根据选择范围隐藏价格表
$("#myAnchor li a").click(function(){
var prices = $(".box-content li");
prices.show();
if (this.id != "All")
prices.not($(".box-content li[id='"+this.id+"']")).hide();
});
Refer LIVE DEMO 2 请参阅LIVE DEMO 2
Since ID of an element must be unique, use a data-*
attribute like 由于元素的ID必须唯一,因此请使用
data-*
属性,例如
<h2>Filter By Price</h2>
<ol id="myAnchor">
<li><a data-range="0-20" href="#" >0.00 - 20.00</a></li>
<li><a data-range="20-50" href="#">20.00 - 50.00</a></li>
<li><a data-range="50-80" href="#" >50.00 - 80.00</a></li>
<li><a data-range="80-100" href="#">80.00 - 100.00</a></li>
<li><a data-range="All" href="#">All</a></li>
</ol>
<ul class="box-content">
<li data-range="0-20">13$</li>
<li data-range="20-50">23$</li>
<li data-range="50-80">60$</li>
</ul>
then 然后
(function ($) {
var $contents = $('.box-content > li');
$("#myAnchor li").click(function (e) {
var range = $(this).find('a').data('range');
if (range == 'All') {
$contents.show();
} else {
$contents.hide().filter('[data-range="' + range + '"]').show()
}
}); //click anchor
})(jQuery); //ready
@Arun has a good answer, but for the sake of variety, I'll add this. @Arun有一个很好的答案,但是为了多样化,我将添加它。
First off, you need to make sure you do not have duplicate id
s. 首先,您需要确保没有重复的
id
。 Secondly, they should start with a letter and not a number. 其次,它们应该以字母而不是数字开头。 Change the
id
s of the list elements in your ul .box-content
to classes that match the id
s of the anchor links. 将
ul .box-content
中的列表元素的id
更改为与锚链接的id
匹配的类。 Something like this: 像这样:
<ol id="myAnchor">
<li><a id="zero-20" href="#" >0.00 - 20.00</a></li>
<li><a id="twenty-50" href="#">20.00 - 50.00</a></li>
<li><a id="fifty-80" href="#" >50.00 - 80.00</a></li>
<li><a id="eighty-100" href="#">80.00 - 100.00</a></li>
<li><a id="All" href="#">All</a></li>
</ol>
<ul class="box-content">
<li class="zero-20">13$</li>
<li class="twenty-50">23$</li>
<li class="fifty-80">60$</li>
</ul>
Now, using jQuery's .siblings() selector you can do something like this to hide everything but the item you clicked on. 现在,使用jQuery的.siblings()选择器,您可以执行以下操作来隐藏除单击的项目以外的所有内容。
$(document).ready(function() {
$('#myAnchor li a').click(function(){
var change = $(this).attr('id');
$('.box-content .'+change).show();
$('.box-content .'+change).siblings().hide();
});
});
Here is a fiddle of it in action: http://jsfiddle.net/5rWQN/ 这是操作中的一个小提琴: http : //jsfiddle.net/5rWQN/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.