javascript - 用于检查 LI 内容的 jQuery - 根据内容添加特定类 - jQuery 的 $(this) 有问题

标签 javascript jquery

我是一个 jQuery 初学者,但我需要为 CMS 的前端设计样式,而更改 HTML 不是一个选项,所以 jQuery 来拯救!我将根据 LI 中的文本向 LI 添加一个类。

我可以使用 jQuery 的 $(this) 对象来获得一些帮助。例如,以下代码有效:

if ($('div.nav ul li:nth-child(2):contains("About")').length > 0) {
    $('div.nav ul li:nth-child(2)').addClass("about");
}

但是为了不以指数方式重复我的代码,我宁愿写这样的东西:

if ($('div.nav ul li:nth-child(2):contains("About")').length > 0) {
    $(this).addClass("about");
}

然而,这是行不通的。我确信我正在扼杀一些非常明显的东西,但我已经阅读了一些关于 $(this) 对象的教程并且我已经盯着我的代码足够长的时间来寻求一些帮助:)

另外,也许我缺少一个更简单的解决方案。假设我有以下标记。

<ul id="nav">
<li>About</li>
<li>Contact</li>
<li>News</li>
</ul>

现在让我们假设这个导航将来可能会改变,所以我不能简单地为每个 LI 分配一个类/图标,只使用 nth-child。有没有一种方法可以循环遍历每个 LI,然后循环遍历每个条件?我对 jQuery 不够熟悉,但在我的英语和 jQuery 组合中,它可能看起来像这样:

loop through #nav:each li {
    if (child:contains("About")').length > 0) {
        $(this).addClass("about");
    }
    if (child:contains("Contact")').length > 0) {
        $(this).addClass("contact");
    }
    if (child:contains("News")').length > 0) {
        $(this).addClass("news");
    }
}

不幸的是,这只是编造的语法!谁能帮我用 REAL jQuery 写这个 :) 如果是这样,我可能会帮助您解决您可能遇到的任何 CSS 问题。

谢谢!

最佳答案

在您的第一个代码片段中,this 没有指向您期望的 DOM 元素,但它主要是执行该代码的实例,因此它不会工作。

您可以使用 $.each 循环并查找每个并应用该类。在这种情况下,您可以看到 $(this) 的使用。

$('#nav > li').each(function(){

    if ($(this).filter(':contains("About")').length > 0) {
        $(this).addClass("about");
    }
    else if ($(this).filter(':contains("Contact")').length > 0) {
        $(this).addClass("contact");
    }
    else if ($(this).filter(':contains("News")').length > 0) {
        $(this).addClass("news");
    }
});

关于javascript - 用于检查 LI 内容的 jQuery - 根据内容添加特定类 - jQuery 的 $(this) 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8900556/

相关文章:

javascript - 如何使用 jQuery 将多个图像的切片与另一个图像切换

jquery - 使用 JQuery 删除 LI 时出现问题

javascript - React 中复杂状态的深度合并

javascript - 如何获取模板 html 文本

jquery - 寻找阴影位置的算法

jquery - 在 Javascript 中将 CSV 转换为多维数组

javascript - 当我们点击某些文本时如何制作弹出屏幕

javascript - 更改列表元素的事件类

javascript - 为什么函数不等待另一个函数

jquery - jQuery 中的可拖动精度