Javascript 为什么这个变量只选择找到的第一个元素?

Javascript 为什么这个变量只选择找到的第一个元素?,javascript,jquery,Javascript,Jquery,我试图为每个元素选择一个特定的父元素,该元素的title属性以“Mod”开头,并将它们放在一个单独的变量中,这样我就可以轻松地控制它们 var allMods= $('#main-element .object[title^="Mod"]').closest('.specific-parent'); $(allMods).hide(); 但是它只对第一个找到的元素起作用,我不知道如何将var设置为每个匹配项,有人能帮我一下吗?如果所有.object[title^=“Mod”]元素都在#main

我试图为每个元素选择一个特定的父元素,该元素的title属性以“Mod”开头,并将它们放在一个单独的变量中,这样我就可以轻松地控制它们

var allMods= $('#main-element .object[title^="Mod"]').closest('.specific-parent');
$(allMods).hide();
但是它只对第一个找到的元素起作用,我不知道如何将var设置为每个匹配项,有人能帮我一下吗?

如果所有
.object[title^=“Mod”]
元素都在
#main element
容器中,它应该可以工作

例如:|

HTML:

结果:只有
.object[title^=“Mod”]
元素的
.specific父元素
变为绿色。

符合以下条件:

对于集合中的每个元素,通过测试元素本身并在DOM树中向上遍历其祖先,获取与选择器匹配的第一个元素


您可能想要(注意,.parent()也只返回一个元素)

HTML是什么样子的?您还需要发布HTML..@JackL。请注意docs@JackL. 在那之前它说了什么?“对于集合中的每个元素”-如果您在jQuery对象中调用了多个元素
.closest()
,那么它返回的对象中可以有多个元素。(另外,您不需要执行
$(allMods)
,因为它已经是一个jQuery对象。
allMods.hide()
应该足够了)它将返回最接近集合中每个元素的
。。。是的,但那是在你的dom上。OP有一个完全不同的选择器集,并保证有一个完全不同的DOM。@MarcB:可能是不同的DOM,但没有理由假设OP的选择器集(包括
最近的
)不会产生多个元素,请参见我的答案。这一切都是关于集合论和jQuery的。:-)我只是想指出,你说的
closest()
是不正确的。没有看到他的DOM,我们就说不出有什么问题。
<div id="main-element">
  <div class="specific-parent">
    <div class="object" title="Mod1">Mod1 - turns green</div>
  </div>
  <div class="specific-parent">
    <div class="object" title="Mod2">Mod2 - turns green</div>
  </div>
  <div class="specific-parent">
    <div class="object" title="Mod3">Mod3 - turns green</div>
  </div>
</div>
<div>
  <div class="specific-parent">
    <div class="object" title="Mod4">Mod4 - does <strong>not</strong> turn green</div>
  </div>
</div>
$('#main-element .object[title^="Mod"]').closest(".specific-parent").css("color", "green");