隐藏不包含选择框值的内容
Hide content not containing select box value
我有一个页面,我想按国家过滤显示的内容,使用选择框。页面最初显示所有内容,但当选择国家时,所有与不匹配的内容都通过添加CSS类隐藏起来。
这是我到目前为止的相关代码:
jsFiddle
HTML:<select name="filter" id="filter">
<option value="" disabled selected></option>
<option value="France">France</option>
<option value="Germany">Germany</option>
<option value="UK">UK</option>
</select>
<div class="media">
<p>blah blah blah France blah blah</p>
</div>
<div class="media">
<p>blah blah blah Germany blah blah</p>
</div>
<div class="media">
<p>blah blah blah Germany blah blah</p>
</div>
<div class="media">
<p>blah blah blah UK blah blah</p>
</div>
CSS: .hidden {
display: none;
visibility: hidden;
}
JavaScript: $('#filter').change(function () {
var country = $('#filter').val();
$('.media').each(function () {
if ($('.media').find(country)) {
} else {
$('.media').addClass('hidden');
}
})
});
我对jQuery/JavaScript的经验很少,但我已经调查并认为我需要循环通过所有匹配的内容"块"与each()
,每次寻找与find()
相关的内容,但我不知道足够得到这个工作。我的代码目前什么也不做。
通常是根据分类或类以及其中的文本进行过滤,而不仅仅是文本…但既然每个问题都有解决办法,这是你的。
http://jsfiddle.net/hardeepmehta/NYCy9/4/ $('#filter').change(function () {
var country = $(this).val().toLowerCase();
var elements = [];
$('.media').each(function(){
if($(this).text().indexOf(country)==-1)
{
$(this).hide();
}
else
{
$(this).show();
}
});
});
问候。
尝试:
$('#filter').change(function () {
var country = $('#filter').val().toLowerCase();
$('.media').each(function () {
if ($(':contains(' + country + ')', this).length) {
$(this).removeClass('hidden');
} else {
$(this).addClass('hidden');
}
})
});
<<p> jsFiddle例子/strong> 你想要这个吗:
$('#filter').change(function () {
var country = $('#filter').val();
$('.media').hide();
$('.media:contains('+ country.toLowerCase() +')').show();
});
演示或:
$('#filter').change(function () {
var country = $('#filter').val();
$('.media').addClass('hidden');
$('.media:contains(' + country.toLowerCase() + ')').removeClass('hidden');
});
演示您最好使用自定义data-*
属性来区分国家/地区:
<div class="media" data-country="UK">
<p>blah blah blah UK blah blah</p>
</div>
然后简单地匹配和隐藏:
$('#filter').change(function () {
var country = this.value;
$(".media").addClass("hidden");
$(".media [data-country=" + country + "]").addClass("show");
});
相关文章:
- JavaScript选择器:查找包含具有特定属性的子体的节点
- 选择包含相同id的所有元素
- 如何查找包含特定选择器的父元素
- jQuery将输入集中在下一个tr->td时,td包含一个输入字段,但从不关注html选择
- 检查选择器在jQuery中是否包含文本(即不是媒体)
- jQuery选择器,用于查找包含具有特定值的TD输入的TR
- 是否有任何函数可以帮助转义 jQuery 选择器中包含的所有元字符?
- 如何从包含1000个项目的数组中随机选择一个项目
- 包含HTML的变量上的jQuery选择器
- 使用XPath选择包含文本的节点,而不考虑CasperJS中的空白
- 您可以根据屏幕大小选择包含和脚本吗
- 在包含两个的Javascript数组中选择另一个元素
- 属性包含选择器 * 替代
- 使用包含选择器在多个列中搜索
- jQuery包含选择器和特殊字符
- 如果我没有在ajax调用的成功函数中包含选择器,则无法选择ajax加载的内容
- 隐藏不包含选择框值的内容
- 无法识别的表达式包含选择器
- 查找一个包含选择器id+文本的元素
- 是否存在不区分大小写的jQuery:包含选择器