Greasemonkey:使用数字和文本优化jquery选择器

时间:2018-04-03 20:03:15

标签: jquery optimization jquery-selectors greasemonkey

Noob问题。

这是我目前的剧本:

// ==UserScript==
// @name        hide-unwanted-element
// @include     https:///*
// @description Hides elements I don't want to see in the search result
// @require     http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant       GM_addStyle
// ==/UserScript==

$("h5:contains('Animation Série')").remove();
$("h5:contains('Animation')").remove();
$("h5:contains('Concert')").remove();
$("h5:contains('Documentaire')").remove();
$("div[category-id='2178']").remove();
$("div[category-id='2179']").remove();
$("div[category-id='2180']").remove();
$("div[category-id='2181']").remove();
$(".v3").remove();

我想隐藏很多包含不同标题的h5,有没有办法优化语法?

此外,我想隐藏具有类别ID的div,从2158到2181,增量为1,但不是2160,2173,2175。同样,我觉得有更好的做法,而不仅仅是列出一个一个,做到了吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

用于检查多个值的包含:

https://stackoverflow.com/a/23248911/2079345

我找不到在某个范围内选择ID的欺骗(也许其他人可以?)

您可以使用jquery filter来执行此操作。选择所有div,然后通过检查ID是否在2个数字之间来过滤ID,并且它不是您的3个不良数字之一(Array.some可以帮助那里)

var divsInRange=$('div').filter(function() {
    var id = $(this).attr('id');
    return id >= 2158 && id <= 2181 && !([2160, 2173, 2175].some(function(el) {
        return id == el;
    }));
});
divsInRange.remove();