Javascript 在for循环中使用parent()

Javascript 在for循环中使用parent(),javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在创建一个chrome扩展,阻止所有torrent搜索引擎站点上的所有色情结果 因此,我试图检索torrents的名称,并对照包含我创建的阻止(成人/色情)单词的字符串数组检查它们。如果与数组字匹配,则应将父元素的显示设置为无。但是jQuery中的parent()似乎无法在for循环中解决这个问题。这是我正在使用的代码 // 'blockedWords' is the array. // '$("dl dt")' contains the words that I am checking a

我正在创建一个chrome扩展,阻止所有torrent搜索引擎站点上的所有色情结果

因此,我试图检索torrents的名称,并对照包含我创建的阻止(成人/色情)单词的字符串数组检查它们。如果与数组字匹配,则应将父元素的显示设置为无。但是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().
/“blockedWords”是数组。
//“$(“dl dt”)”包含我正在对照中的字符串检查的单词
//数组“blockedWords”。
对于(变量i=0;i<$(“dl dt”)。长度;i++){
对于(var j=0;j-1){
$(this).parent().style.display=“none”//第一个方法或
$(“dl dt”)[i].parent().style.display=“none”//第二个方法
}
}
}
//第一个方法显示错误“无法设置未定义的属性”显示”
//第二个方法显示错误“$(…)[i]。父对象不是函数”
//“$(“dl dt”)[i].parent().style.display”不起作用,但
//“$(“dl dt”).parent().style.display”也不起作用
//“$(“dl dt”)[i].style.display”在没有父项()的情况下可以完美地工作。
我也试过“父母()。 任何帮助都将不胜感激:)。 作为一个新手,我也愿意接受任何其他建议。 如果您也能解释一下您的代码,我将不胜感激:)


顺便问一下,你能相信有500多家色情公司吗:o:p:D

既然你有jQuery,你可以避免使用jQuery的
filter()
和JavaScript
reduce(s,v)
使用嵌套for循环:

演示:

var blockedWords=[
“妈的”,“操”,“性”
];
$(“dl dt”).filter(函数(){
var str=$(this.text();
返回阻塞字.reduce(函数s,v){
返回s+!!~str.indexOf(v);
}, 0);
}).parent().hide()

这是狗屎
这没关系
他妈的
没问题

性爱视频
JQuery的
parent
函数返回一个JQuery对象,其中包含父元素。如果要从此对象访问元素,则需要使用括号表示法从对象检索元素

如果您提供一些HTML,我将能够测试它并确保它工作,但是这里有一些代码可以让您指向正确的方向,主要使用JQuery,而不是依赖JavaScript的
for
循环

JQuery重写 你具体问题的答案是什么 更改此项:

$(this).parent().style.display= "none";       // 1st Method or
$("dl dt")[i].parent().style.display= "none"; // 2nd Method
为此:

$(this).parent()[0].style.display= "none";       // 1st Method or
$($("dl dt")[i]).parent()[0].style.display= "none"; // 2nd Method
或者,您可以使用JQuery的
css
函数,如下所示:

$(this).parent().css("display", "none");       // 1st Method or
$($("dl dt")[i]).parent().css("display","none"); // 2nd Method

jQuery方法应该是
…parent().hide()
。谢谢:)。hide()比style.background短得多。但是它仍然没有解决核心问题。“但是它仍然没有解决核心问题。”-实际上它确实解决了核心问题,因为核心问题是
.parent()
返回一个jQuery对象,而jQuery对象没有
.style
属性。“
$(“dl dt”).parent().style.display
在没有[i]的情况下可以完美地工作”-我不知道它怎么可能工作,原因是我刚才提到的。很抱歉,在使用“hide()”之后,它似乎仍然无法工作。错误仍然是“$(…)[i]。parent不是函数”“$(“dl dt”)。parent().style.display如果没有[i]“我不知道它怎么会工作,因为我刚才提到的原因。”你是对的,它不工作。对不起,我弄错了。但是“hide()”仍然不起作用(至少它本身不起作用)。对不起,它似乎也不起作用。错误仍然是“$(…)[i]。父函数不是函数”哦,对了,谢谢您的澄清。这意味着您试图在普通的ol'DOM元素上使用JQuery函数。将其包装在JQuery选择器中。更新我的答案以反映这些变化。不知何故,你们两个答案中的第一个方法仍然不起作用,但不用担心,因为第二个方法很有魅力。谢谢:)我的头撞到了第一个答案lol谢谢,尽管我很少理解它,但这一个效果很好:)再次感谢你的评论和建议。
$(this).parent()[0].style.display= "none";       // 1st Method or
$($("dl dt")[i]).parent()[0].style.display= "none"; // 2nd Method
$(this).parent().css("display", "none");       // 1st Method or
$($("dl dt")[i]).parent().css("display","none"); // 2nd Method