我在Show/hide dynamic content with data attributes
找到了这个代码段这是一个基于数据属性动态显示和隐藏div的方便片段。
有人可以建议在菜单中添加SHOW ALL选项的方法吗?
var countries = {},
country;
$('.countries li[data-country]').each(function(i, el) {
country = $(el).data('country');
countryname = $(el).data('countryname');
if (countries.hasOwnProperty(countryname)) {
countries[countryname] += 1;
} else {
countries[countryname] = 1;
}
});
for (var key in countries) {
$('#menu').append('<span data-countrycode="' + key + '">' + key + ' (' + countries[key] + ')</span>');
}
var $list = $(".countries");
$list.children().detach().sort(function(a, b) {
return $(a).text().split(' ')[1].localeCompare($(b).text().split(' ')[1]);
}).appendTo($list);
$('#menu span').click(function() {
var clicked = $(this).data('countrycode');
$('li[data-countryname=' + clicked + ']').show(1000);
$('li').not('[data-countryname=' + clicked + ']').hide(200);
});
#menu span {
display: inline-block;
margin-right: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="menu"></div>
<ul class="countries">
<li data-country="country-2" data-countryname="UK">Category UK</li>
<li data-country="country-2" data-countryname="UK">Category UK</li>
<li data-country="country-2" data-countryname="UK">Category UK</li>
<li data-country="country-3" data-countryname="Germany">Category Germany</li>
<li data-country="country-1" data-countryname="France">Category Alpha</li>
<li data-country="country-1" data-countryname="France">Category Beta</li>
<li data-country="country-1" data-countryname="France">Category C</li>
<li data-country="country-1" data-countryname="France">Category D</li>
<li data-country="country-1" data-countryname="France">Category E</li>
</ul>
答案 0 :(得分:2)
将所有按钮添加到#menu
,并在li
事件中显示所有click()
。
var countries = {},
country;
$('.countries li[data-country]').each(function(i, el) {
country = $(el).data('country');
countryname = $(el).data('countryname');
if (countries.hasOwnProperty(countryname)) {
countries[countryname] += 1;
} else {
countries[countryname] = 1;
}
});
for (var key in countries) {
$('#menu').append('<span data-countrycode="' + key + '">' + key + ' (' + countries[key] + ')</span>');
}
$('#menu').append('<span id="showAll"> show all</span>');
var $list = $(".countries");
$list.children().detach().sort(function(a, b) {
return $(a).text().split(' ')[1].localeCompare($(b).text().split(' ')[1]);
}).appendTo($list);
$('#menu span').click(function() {
var clicked = $(this).data('countrycode');
$('li[data-countryname=' + clicked + ']').show(1000);
$('li').not('[data-countryname=' + clicked + ']').hide(200);
});
$('#showAll').click(function() {
$('li[data-countryname]').show(1000);
});
#menu span {
display: inline-block;
margin-right: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="menu"></div>
<ul class="countries">
<li data-country="country-2" data-countryname="UK">Category UK</li>
<li data-country="country-2" data-countryname="UK">Category UK</li>
<li data-country="country-2" data-countryname="UK">Category UK</li>
<li data-country="country-3" data-countryname="Germany">Category Germany</li>
<li data-country="country-1" data-countryname="France">Category Alpha</li>
<li data-country="country-1" data-countryname="France">Category Beta</li>
<li data-country="country-1" data-countryname="France">Category C</li>
<li data-country="country-1" data-countryname="France">Category D</li>
<li data-country="country-1" data-countryname="France">Category E</li>
</ul>
答案 1 :(得分:1)
这样的事情应该有效:
$('#show-all').click(function() {
$('li[data-countryname]').show(1000);
});
答案 2 :(得分:1)
var countries = {},
country;
$('#menu').append('<span data-countrycode=""> All</span>');
$('.countries li[data-country]').each(function(i, el) {
country = $(el).data('country');
countryname = $(el).data('countryname');
if (countries.hasOwnProperty(countryname)) {
countries[countryname] += 1;
} else {
countries[countryname] = 1;
}
});
for (var key in countries) {
$('#menu').append('<span data-countrycode="' + key + '">' + key + ' (' + countries[key] + ')</span>');
}
var $list = $(".countries");
$list.children().detach().sort(function(a, b) {
return $(a).text().split(' ')[1].localeCompare($(b).text().split(' ')[1]);
}).appendTo($list);
$('#menu span').click(function() {
var clicked = $(this).data('countrycode');
if(clicked != '') {
$('li[data-countryname=' + clicked + ']').show(1000);
$('li').not('[data-countryname=' + clicked + ']').hide(200);
}
else {
$('li').show(1000);
}
});
&#13;
#menu span {
display: inline-block;
margin-right: 20px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="menu"></div>
<ul class="countries">
<li data-country="country-2" data-countryname="UK">Category UK</li>
<li data-country="country-2" data-countryname="UK">Category UK</li>
<li data-country="country-2" data-countryname="UK">Category UK</li>
<li data-country="country-3" data-countryname="Germany">Category Germany</li>
<li data-country="country-1" data-countryname="France">Category Alpha</li>
<li data-country="country-1" data-countryname="France">Category Beta</li>
<li data-country="country-1" data-countryname="France">Category C</li>
<li data-country="country-1" data-countryname="France">Category D</li>
<li data-country="country-1" data-countryname="France">Category E</li>
</ul>
&#13;