隐藏,如果html是相同的

时间:2012-08-16 10:40:09

标签: javascript jquery html events if-statement

我正在使用Feedburner来显示Feed。有时饲料具有相同的标题。在这种情况下,我想只显示第一个标题,并隐藏所有其他具有相同文本的标题。我试过这个:JsFiddle

没有运气。我可以将它们称为“a”,但我不明白如何将它们彼此区分开来。

2 个答案:

答案 0 :(得分:0)

尝试从显示的所有链接开始并使用此javascript:

$(function() {
    var $feeds = $(".feedburnerFeedBlock li a");
    $feeds.each(function(i) {
        var $that = $(this);
        $feeds.each(function(j) {
            var $this = $(this);
            if (j <= i) {
                return true;//continue
            };
            if ($this.text() == $that.text()) {
                $this.hide();
            }
        });
    });
});

<强> DEMO

答案 1 :(得分:0)

您可以使用对象来收集所有带有jQuery元素的Feed标题,而不是使用filter函数。该对象的行为与Java中的HashMap一样,因为对象不能包含重复的键 - 因此会自动消除重复的提要标题。

var unique = { };
// Reverse elements to keep first occurence of feed title (and not the last one)
$($(".feedburnerFeedBlock li").get().reverse()).each(function(){
    // Use feed title as key and jQuery element as value
    unique[$(this).find("a").text()] = $(this);
}).hide();
// Show all unique elements
for (title in unique) {
    unique[title].show();
}

JSFiddle:http://jsfiddle.net/Aletheios/9GKBH/1/

此外,由于多种原因,您的代码无效。其中jQuery的.html()函数只返回集合中第一个元素的HTML字符串(see documentation)。