如果div包含特定文本,则创建将隐藏div的bookmarklet

时间:2015-04-06 17:40:38

标签: javascript jquery

我希望创建一个主要用于此页面的书签:http://forum.sectioneighty.com/find-new/528631/posts

它将搜索具有' discussionListItem'类的div。 ' discussionListItem'是一个div的父级,有一个' forumLink'。如果' forumLink'包含字符串"音乐",添加'显示:无'到其父级' discussionListItem'。

到目前为止,我已创建了这个,有效:

    javascript:(function(){document.getElementsByClassName('discussionListItem')[0].style.setProperty('display', 'none', 'important');})();

它隐藏了第一个具有' discussionListItem'类的div。

在此基础上我写了这个:

    javascript:(function(){$(".discussionListItem .forumLink a:contains('Music')").closest(".discussionListItem").css("display" , "none");});();

这是我完成初始请求的时间,但它无法正常工作。我在Javascript / jQuery中表现不佳,所以我确定有一些我不知道的东西。我将此代码基于我在此处找到的答案:If a div contains a specific string of text, edit the parent's css

此外,如果有任何简单的方法,我希望它能够搜索多个字符串...所以如果.forumList包含' Music' OR'体育'或者' Life',它会将其父级的div更改为display:none。

谢谢!

2 个答案:

答案 0 :(得分:0)

我不认为jQuery会在书签的范围内。 This site会将您的代码转换为支持jQuery的书签。你的代码看起来像这样:

(function(){ 
    var searchArray = ["Music", "Sports", "Life"];
    for(var searchIndex in searchArray)
        $(".discussionListItem:contains("+searchArray[searchIndex]+")").css({"display":"none"});
})();

我可以从控制台运行它,但是如果你遇到麻烦,请尝试使用bookmarklet / jQuery转换器。

或者,你可以用纯javascript写它,它应该看起来非常相似。你应该能够将这个作为书签运行而不需要任何转换。

(function() {
    var searchArray = ["Music", "Sports", "Life"];
    var elements = Array.prototype.slice.call(document.body.querySelectorAll(".discussionListItem")); 
    for(var searchIndex in searchArray)
        for(var elIndex in elements)
            if(elements[elIndex].innerHTML.indexOf(searchArray[searchIndex])>=0) 
                elements[elIndex].style.display = "none";
})();

答案 1 :(得分:0)

$('.discussionListItem .forumLink:contains("Music")').parents('.discussionListItem').hide()