gpt4 book ai didi

javascript - 在 for 循环中使用parent()

转载 作者:太空宇宙 更新时间:2023-11-04 15:44:19 24 4
gpt4 key购买 nike

我正在创建一个 chrome 扩展程序,它会阻止所有 torrent 搜索引擎网站上的所有色情结果。

因此,我尝试检索种子的名称,并根据我创建的包含阻止(成人/色情)单词的字符串数组检查它们。如果它与数组单词匹配,那么它应该将父元素的显示设置为无。但 jQuery 的parent()似乎无法在for循环中解决这个问题。这是我正在使用的代码。

// 'blockedWords' is the array.
// '$("dl dt")' contains the words that I am checking against strings from
// the array 'blockedWords'.

for (var i = 0; i < $("dl dt").length; i++) {
for (var j = 0; j < blockedWords.length; j++) {
if($("dl dt")[i].innerText.indexOf(blockedWords[j]) > -1){
$(this).parent().style.display= "none"; // 1st Method or
$("dl dt")[i].parent().style.display= "none"; // 2nd Method
}
}
}

// 1st Method shows the error 'Cannot set property 'display' of undefined'
// 2nd Method shows the error '$(...)[i].parent is not a function'
// '$("dl dt")[i].parent().style.display' doesn't work but
// '$("dl dt").parent().style.display' doesn't work either
// '$("dl dt")[i].style.display' works perfectly without parent().

我也尝试过“parents()”。任何帮助将不胜感激 :)。作为一个新手,我也愿意接受任何其他建议或建议。如果您也能解释您的代码,我将非常感激:)

顺便说一句,你能相信那里有超过 500 家色情公司吗 :o :P :D

最佳答案

由于您有 jQuery,因此您可以使用 jQuery 的 filter() 和 JavaScript reduce(s,v) 来避免使用嵌套 for 循环:

// Filter function removes elements that return a false/falsey value like 0
$("dl dt").filter(function() {

// Save current element's innerText so we can use it within the reduce function
var str = $(this).text();

// Return sum of reduce function
return blockedWords.reduce(function(s, v) {

// For each item in blockedWords array, check whether it exists in the string. Add to total number of matches.
return s + !!~str.indexOf(v);

}, 0); // 0 = intial value of reduce function (number of matches)

}).parent().hide(); // Hide elements which pass through the filter function

演示:

var blockedWords = [
'shit', 'fuck', 'sex'
];

$("dl dt").filter(function() {
var str = $(this).text();
return blockedWords.reduce(function(s, v) {
return s + !!~str.indexOf(v);
}, 0);
}).parent().hide();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<dl><dt>this is shit</dt></dl>
<dl><dt>this is okay</dt></dl>
<dl><dt>fuck this</dt></dl>
<dl><dt>no problem</dt></dl>
<dl><dt>sex videos</dt></dl>

编辑:如果您看到之前的答案,我深表歉意,因为它不完整。我还添加了一个片段用于演示目的。有关reduce算法的进一步解释,请查看this answer out (基本上,它将 indexOf 的值转换为 0 或 1,因为如果未找到,则 indexOf 返回 -1,如果找到,则返回该位置的另一个 0 索引整数)。

关于javascript - 在 for 循环中使用parent(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43671699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com