Javascript jQuery检查LI';s content-根据内容添加特定类-jQuery遇到问题';新加坡元(本)

Javascript jQuery检查LI';s content-根据内容添加特定类-jQuery遇到问题';新加坡元(本),javascript,jquery,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"); } 但为了不以指数形

我是一个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");
}
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");
    }
}
然而,这是行不通的。我确信我正在破坏一些非常明显的东西,但我已经阅读了一些关于$(this)对象的教程,并且我已经盯着我的代码看了足够长的时间,来寻求一些帮助:)

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

<ul id="nav">
<li>About</li>
<li>Contact</li>
<li>News</li>
</ul>
不幸的是,这只是由语法组成的!有人能帮我在真实的jQuery中写这个吗:)如果是的话,我可以帮你解决你可能遇到的任何CSS问题


谢谢

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

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


您不需要在
li
元素上循环。使用您发布的示例标记,下面介绍如何将类添加到About
li
元素

$('#nav li:contains(About)').addClass('about')
冲洗并重复两次以上,用于其他两项

$('#nav li:contains(Contact)').addClass('contact')
$('#nav li:contains(News)').addClass('news')
$(此选项)仅适用于函数。它是对调用函数所针对的元素的引用。if语句不是函数,因此if不适用。相反,您可以执行变量缓存,如下所示:

var $aboutItem = $('div.nav ul li:nth-child(2):contains("About")');
if($aboutItem.length > 0) {
    $aboutItem.addClass("about");
}
jQuery each()函数允许您遍历集合。$(this)对象将引用迭代中的当前元素。假设您的类始终与内容匹配,则此代码将正常工作。否则,您可以为这些类创建一个switch语句

$("ul#nav li").each(function(){
    var txt = $(this).text();
    $(this).addClass(txt.toLowerCase());
});

哇,太棒了!如此紧凑的代码和它得到的工作一样,谢谢!
$("ul#nav li").each(function(){
    var txt = $(this).text();
    $(this).addClass(txt.toLowerCase());
});