如何仅从具有相同类名
的多个div标签中显示不同值<div class="categories">cat 1</div>
<div class="categories">cat 1</div>
<div class="categories">cat 2</div>
<div class="categories">cat 2</div>
<div class="categories">cat 2</div>
<div class="categories">cat 3</div>
<div class="categories">cat 3</div>
我想只显示不同的值并隐藏其余的
答案 0 :(得分:3)
可能是这样的事吗?
$('.categories').filter(function(){ //use filter on all .categories
var txt = $.trim(this.innerHTML); //Get the text of current
return ($(this).nextAll().filter(function () { //filter all of the proceeding siblings which has the same text
return $.trim(this.innerHTML) === txt
}).length); //send true or false (in fact truthy or falsy to ask to hide the current element in question)
}).hide();
<强> Fiddle 强>
另一种衍生物,这将隐藏第一个,而前者将隐藏最后一个。
$(function () {
$('.categories').each(function(){
var txt = $.trim(this.innerHTML);
$(this).nextAll(':visible').filter(function () {
return $.trim(this.innerHTML) === txt
}).hide();
});
});
<强> Fiddle 强>
另一种方法,它采用较少的迭代并创建一个选择器,其中包含要隐藏的元素的索引。
$(function () {
var arrText = [];
$(($('.categories').map(function(){
var txt = $.trim(this.innerHTML);
if(arrText.indexOf(txt) == -1)
arrText.push(txt);
else
return('.categories:eq(' + $('.categories').index(this) + ')'); //create the selector with eq
}).get().join(','))).hide();
});
<强> Fiddle 强>
答案 1 :(得分:2)
您可以使用:
$(function () {
var text = []
$('.categories').each(function () {
if ($.inArray($(this).text(), text)<0) {
text.push($(this).text())
}
});
// you can use now the variable "text"
console.log(text);
});
答案 2 :(得分:0)
$('.categories').each(function() {
var textContent = $(this).text();
if ($('.categories:visible').not(this).filter(function() {
return $(this).text() == textContent;
}).length) {
$(this).hide();
}
});
小提琴:http://jsfiddle.net/cYjyn/1/
编辑:已更改:包含赞成.filter以避免子匹配