javascript - 如何获取父元素?

标签 javascript jquery html

我有这部分 HTML:

<div id="menu">
    <ul>
        <li><a href="/">Startseite</a></li>
        <li class="active"><a href="/pacmodule/glass">Brillengl&#228;ser</a></li>
        <li><a href="/pacmodule/completeglass">Komplettbrille</a></li>
        <li><a href="/t/Comingsoon">Sportbrillen</a></li>
        <li><a href="/PacCategoryRedirect/0">Marketing</a></li>
        <li><a href="/customer/statistics">Statistik</a></li>
     </ul>
</div>

我想删除 class="active"参数并将其设置在我具有 href="/pacmodule/completeglass"属性的 li 标记中。

我用 jquery 成功完成的第一部分:

$("#menu").find("ul:first").find(".active").removeClass("active");

但我对第二部分有疑问。这只选择一个标签:

$('a[href="/pacmodule/completeglass"]').parent().html();

这都是 ul 标签:

$('a[href="/pacmodule/completeglass"]').parent().parent().html();

如何在 href="/pacmodule/completeglass"的 li 标签中设置 class="active"属性

谢谢你的帮助。

最佳答案

您不需要 html() 调用。他们只是将 innerHTML 作为字符串返回。您可能希望返回 outerHTML(对于 outerHTML,请使用类似 ...parent()[0].outerHTML 的内容)

试试这个:

$('a[href="/pacmodule/completeglass"]').closest('li').addClass('active');

它会根据 href = "/pacmodule/completeglass"找到 anchor ,然后找到最近的祖先是 LI,然后将类 active 添加到

closest 是查找特定类型祖先的最有用方法。它比使用 parent() 更好,因为 closest 可以应对 HTML 结构的变化。

注意:如果您解释了总体目标,可能有比搜索链接 href 更好的方法 :)

更新

你不想用这个删除之前的选择,因为它太具体了:

$("#menu").find("ul:first").find(".active").removeClass("active");

试试这个:

$("#menu li.active").removeClass("active");

关于javascript - 如何获取父元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25810438/

相关文章:

当 DOM 改变时 JavaScript 数组也会改变

asp.net - 如何在 asp :textbox 中放置提示

Javascript对象字面量,如何使用 'this'引用对象中的变量

jquery - 遍历数组中的元素和元素

jquery - 无法通过 JQuery 从 Bootstrap DateTimePicker 获取日期对象

javascript - html 格式的谷歌地图。无法显示 map

html - 如何使hr标签在文本框上不可见

javascript - 如何将文本分解成单独的新行以便其他用户可以编辑并突出显示这些编辑(类似于 github)?

javascript - Ooxml 中不显示下划线

javascript - 如何通过自动完成点击来集中注意力?