Lazyweb:需要javascript根据元素的访问类删除li元素

时间:2009-01-11 09:39:00

标签: javascript css greasemonkey

我有这个页面有很多我不需要的数据,因为我已经点击了它,但它经常重复,所以我必须在视觉上寻找蓝色。我意识到这可能更有效率,并询问一位CSS好友是否可以根据是否已访问包含链接将元素设置为隐藏。显然你需要js。

导致li.result元素删除(或可见性:无)的树:

li.result
 div.avatar
  a

我正在试图通过谷歌搜索来弄清楚如何做到这一点,并获得了一些关于专家性别变化的东西,但没有多大帮助。你会怎么做?

这适用于Greasemonkey,因此涉及向页面添加代码和检查Cookie的提示无用。我很抱歉没有让这个更清楚,而不仅仅是标记之前的油脂。

3 个答案:

答案 0 :(得分:4)

1.您可以使用a:访问过的css选择器。

a:visited{
   display:none;
}

它会隐藏访问过的链接(至少在firefox中)。

2.如果您想删除上面的div和li,您可能需要使用cookie并记住用户点击的链接。

所以:

当用户点击链接时,将该链接ID放入Cookie中。 然后,对于Cookie中的每个链接ID,您可以使用jQuery之类的内容:

var ids = $.cookie("cookie_with_ids");
var split_ids = ids.split(','); // split by comma

for(var i= 0; i<split_ids.length; i++){
    $("link_"+split_ids[i]).parent().parent().hide();
}

html应该类似于:

<li class="result">
 <div class="avatar">
  <a href="#" id="unique_link_id_on_this_page"> ....

这不是通过任何方式进行测试,但它应该给你一个关于你必须做什么的想法。

对于Cookie处理,您可以使用jquery cookie plugin

答案 1 :(得分:0)

请注意,之前我没有使用Greasemonkey,而且我的JS知识充其量只是简单。

您是否无法使用JavaScript向现有<style>代码或<head>添加样式声明?

例如,添加将不同颜色应用于不同链接的规则:

li.result div.avatar a {
    color: #000;
}

li.result div.avatar a:visited {
    color: #111;
}

然后遍历归类li的所有result元素,检查其中包含的a颜色是#000还是#111。在我看来会创建一个基本的:访问过的检查器。我现在要测试它(如果只是为了学习一些东西),但这种事情是否可行?

答案 2 :(得分:0)

这是一个朋友为我鞭打的那个完美无缺的人。主要发布以防其他人最终发现它有用。

// ==UserScript==
// @name           Twitter Search Seen
// @namespace      http://ctho.org
// @description    Hides tweets you've seen
// @include        http://search.twitter.com/*
// ==/UserScript==

for each (var i in document.links) {
    if (i.parentNode.className == "msg" && i == i.parentNode.childNodes[1]) {
//alert(getComputedStyle(i, null).color);break;
        if (getComputedStyle(i, null).color == "rgb(147, 13, 133)") {
            i.parentNode.parentNode.style.display="none";       
        } 
    }
}

Hackish,是的,你理论上可以使用时尚来设置已知颜色的访问链接。