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