【问题标题】:How can I change the CSS of a specific word?如何更改特定单词的 CSS?
【发布时间】:2016-07-28 23:16:57
【问题描述】:

我一直在寻找这个答案,但找不到任何关于此的具体信息。

用文字来形容: 我想改变一个类中特定单词的颜色。

示例: 如果该类包含单词 Online 它将使其变为绿色。 如果该类包含单词 Offline,它将使其变为红色。

现在是代码:

<section class="even">
                <h5>Voltz 2.0.4</h5>
                <span class="tag version"><span>1.5.2</span></span>
                <div class="serverinfo">
                    <p>Status: <span class="status"></span></p>
                    <p>Players: <span class="voltz-onlineplayers"></span>/<span class="voltz-maxonlineplayers"></span></p>
                    <p>IP: voltz.arcadia.eu</p>
                </div>
                <a class="button" href="vote.html#voltz">Vote</a>
                <a class="button" href="modpacks.html#voltz">Modpack Info</a>
            </section>

voltz-online 类将在线或离线填写关于服务器响应的单词(已经完成)。

但我想检查班级状态是否包含在线或离线一词。 我不完全确定应该使用什么来获得这种效果。

我很确定我必须使用此功能,但仅此而已。

$( document ).ready(function() {
        //code to change color here.
    });

如果有人能用示例代码解释这一点,我会很好。 如果您缺少信息,请随时提出问题

编辑: 举一个直观的例子来说明我的意思是让事情变得更简单。

我希望突出显示的文本在在线时变为绿色,在离线时变为红色。

【问题讨论】:

  • 为什么不给你想改的元素不止一个类呢?而不是voltz-online 使用voltz online。那么你只需要一个在线课程和一个离线课程。
  • 好吧,由于我对 javascript 的了解有限,我必须为我正在运行的每台服务器使用不同的类来从正确的 IP 检索信息。所以这就是为什么我添加了第二个类,所以我只需要做一次,而不是将它添加到每个不同的类中。

标签: jquery html css class


【解决方案1】:

实际上,您可以使用 CSS 轻松做到这一点。

[class*=online] {
  color: green;
}
[class*=offline] {
  color: red;
}

此 CSS 选择器正在查找具有名为 class 的属性的任何元素,*= 告诉浏览器查看该属性值中是否存在以下字符串。

因此,任何名称为 something-onlineoffline-something 或任何组合的类都将被此选择器匹配。

您可以将相同的选择器与 jquery 一起使用并设置 css 样式,但不需要为此使用脚本。

编辑:

感谢 UndoingTech 提供指向属性选择器参考的链接。我将它包含在答案中以便更容易找到http://www.w3schools.com/css/css_attribute_selectors.asp

属性选择器非常强大,但经常被忽视。由于 jQuery 使用 CSS 选择器,所有属性选择器也可以在脚本中工作。

编辑:

根据对原始问题的澄清,这里是根据元素内的文本更改具有特定类的元素的color 样式的正确解决方案。

$(function() {
  $(".status").each(function() {
    var text = $(this).text().trim().toLowerCase();
    if (text === "offline") {
      $(this).css("color", "red");
    } else if (text === "online") {
      $(this).css("color", "green");
    }
  });
});

此代码查找具有.status 类的所有元素,然后.each() 循环遍历每个元素并为每个元素调用一次内联函数。此函数将所有文本修剪并转换为小写,然后将该文本的值与“离线”或“在线”进行比较,然后相应地设置元素的 css 颜色。

【讨论】:

  • 非常好。对于那些不熟悉 CSS 属性选择器的人:W3Schools CSS Attribute Selectors。它们可能非常很有帮助。
  • 感谢您的回答。但我不完全确定如何让它发挥作用。我一直无法更改名为 status 的跨度内单词的样式
  • @DarkEyeDragon &lt;span class="status"&gt; 里面没有字。其他&lt;span&gt;s 也没有任何文字。您是说要根据&lt;span class="status"&gt; 中的文本应用样式吗?
  • @UndoingTech 是的。我添加了一张图片来更好地解释事情。 span 内的文本是通过 API 生成的。
  • @DarkEyeDragon 我已经更新了我的答案以反映这些新信息
【解决方案2】:

感谢您发布图片。它真的把事情弄清楚了。

这是一个 jQuery 解决方案。我不确定每页是否有多个状态,所以我让它工作以防万一你有多个。

$(document).ready(function() {
      var status = $(".status");
      status.each(function(index) {
          if ($(this).text() == "Online") {
            $(this).css("color", "green");
          } else {
            if ($(this).text() == "Offline") {
              $(this).css("color", "red");
            } // end if
          } // enf else
        }); // end each
      }); // end ready
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<section class="even">
  <h5>Voltz 2.0.4</h5>
  <span class="tag version"><span>1.5.2</span></span>
  <div class="serverinfo">
    <p>Status: <span class="status">Offline</span>
    </p>
    <p>Players: <span class="voltz-onlineplayers"></span>/<span class="voltz-maxonlineplayers"></span>
    </p>
    <p>IP: voltz.arcadia.eu</p>
  </div>
  <a class="button" href="vote.html#voltz">Vote</a>
  <a class="button" href="modpacks.html#voltz">Modpack Info</a>
</section>

如果没有jQuery selecor.each() 上的有用文档,我无法做出这个答案。

【讨论】:

  • 谢谢。这正是我一直在寻找的。是的,我在一页上大约有 5 个。所以谢谢你已经包括了。
  • 求助。似乎它没有按预期工作。当我自己在跨度中填写单词时,它工作正常。但它似乎没有检测到 API 在那里放了一个字符串。我尝试使用window.onload,但这也不起作用,除非我自己把这个词放在跨度之间。我会将工作代码上传到 jsfiddle 或代码 sn-p 并将其作为原始问题的编辑。
  • API 也是 JavaScript 吗?如果是这样,你可以把它变成一个函数,并在你的 API 调用结束时调用它。或者您可以尝试将脚本放在正文的底部,尽管我不确定这会有所不同。
  • API 也是 JavaScript。我也尝试在函数中实现它,但它没有区别。这是它的一个娱乐:JsFiddle 我真的不习惯使用 javascript。所以这可能只是我犯的一个愚蠢的错误,或者对你来说很容易解决。
  • 我对小提琴做了一些修改。我取出了 jQuery 答案并为您的代码添加了样式。 this fiddle好吗?
【解决方案3】:

@Joel 的回答要好得多,但既然您要求 jQuery 中的解决方案,这会有所帮助。

$( document ).ready(function() {
     var status = $('.status');
     if(status.hasClass('voltz-online')) {
          status.css('color', 'green');
     } else if (status.hasClass('voltz-offline')) {
          status.css('color', 'red');
      } 
});

【讨论】:

  • 你可以使用 jQuery's selector 来做 Joel 用 CSS 做的同样的事情。 $.("[class*=online]").css('color', 'green'); 我不确定这是否有效,但应该是这样的。感谢使用 jQuery。
  • @UndoingTech 绝对!我唯一的论点是OP说他对jQuery了解不多,所以最好从简单的开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 2013-01-02
  • 2018-03-01
  • 1970-01-01
  • 2017-06-19
相关资源
最近更新 更多