【发布时间】:2020-04-26 21:28:07
【问题描述】:
如果我有以下有序列表:
<ol class="breadcrumbs">
<li title="Sbox">
<a href="myURL">SANDBOX</a>
</li>
<li title="API Ref">
<a href="myURL">API Reference</a>
</li>
<li title="Schemas">
<a href="myURL">Schema Files</a>
</li>
</ol>
我可以通过使用这个 jQuery 代码“收获”第二个子列表项的文本(“API 参考”):
var bcrumbtext = $("ol.breadcrumbs li:nth-child(2)").text();
如果我有 多个 具有以下结构的无序列表(确切地说是 6 个):
<ul class="category">
<li class="cat" catid="360002246652"><a>Getting Started</a></li>
<li class="sec" secid="360007910471" categoryid="360002246652" parentsecid="null"><a href="myURL">How to do X</a></li>
<li class="sec" secid="360007910471" categoryid="360002246652" parentsecid="null"><a href="myURL">How to do Y</a></li>
<li class="sec" secid="360007910471" categoryid="360002246652" parentsecid="null"><a href="myURL">How to do Z</a></li>
</ul>
<ul class="category">
<li class="cat" catid="360002246652"><a>API Reference</a></li>
<li class="sec" secid="360007910471" categoryid="360002246652" parentsecid="null"><a href="myURL">How to do X</a></li>
<li class="sec" secid="360007910471" categoryid="360002246652" parentsecid="null"><a href="myURL">How to do Y</a></li>
<li class="sec" secid="360007910471" categoryid="360002246652" parentsecid="null"><a href="myURL">How to do Z</a></li>
</ul>
如何设置一个变量,使我能够为每个无序列表成功“收集”第一个列表项(“猫”类)中的文本?
我的最终目标是能够将一个“bcrumbtext”值(在这种特殊情况下:“API 参考”)与每个具有“cat”类的列表项的文本值进行比较。 (这个 .cat 列表项始终是“类别”UL 中的第一个后代。)一旦建立匹配,我将需要更改 CSS 值,但这是下一步,我会及时处理该步骤。目前,我只是纠结于如何设置第二个变量并执行值比较。
提前感谢您提供的任何意见。
这是一个更新的代码块。我希望显示所有 li.sec 列表项属于特定 li.cat 与匹配的文本值。请注意,li.sec 的默认 'display' 属性是 'none'(因此我使用了 'show' 方法)。
不知何故,这仍然不起作用。控制台中没有显示任何错误,但没有实现所需的效果:
var bcrumbtext = $("ol.breadcrumbs li:nth-child(2)").text();
$("ul.category li.cat").each(function() {
if ($(this).text() == bcrumbtext) {
$(this).nextUntil('ul').show('li.sec');
}
});
【问题讨论】:
-
$("ul.category li.cat").each(function() { if ($(this).text() == bcrumtext) { ...change CSS value... } })这将遍历ul.category中的每个li.cat项目,并使用bcrumtext检查每个li.cat项目的文本。 -
非常感谢@lurker。我想我快到了。代码不会抛出错误,这是一个很好的开始。我仍然没有达到我需要的最终效果——即显示所有 'li.sec' 列表项直接落在具有匹配文本值的特定 'li.cat' 下。 (“li.sec”的默认显示为“none”。)我在原始问题中附加了一些代码。或许您能够确定问题所在?
标签: jquery list variables compare