【问题标题】:Jquery: Change first word Color Span IssueJquery:更改第一个单词颜色跨度问题
【发布时间】:2012-12-30 09:55:59
【问题描述】:

我正在尝试使用 jquery 更改定义类或标记的第一种颜色。一切正常,但我有一个标题有自己的跨度并且给了麻烦。我正在使用下面的代码为第一个单词添加 span 元素和内联样式。

$(document).ready(function()
{

    $('.header-logo, h1').each(function() {
        var h = $(this).html();
        var index = h.indexOf(' ');
        if(index == -1) {
            index = h.length;
        }
        $(this).html('<span style="color:black;">' + h.substring(0, index) + '</span>' + h.substring(index, h.length));
    });

});

这完美地添加了 span 标签并改变了颜色。但我有一个标题,其 html 结构如下

<h1>
    <span id="fav" class="btn-fav"><a href="#"Add to fav</a></span>
    <span class="the-title">Title text goes here</span>
</h1>

在这里,我只想为“标题文本在此处”第一个单词(标题)添加颜色,但通过在 span 标签中添加另一个跨度标签来破坏 javascript 结构,如下所示

<span style="color:black;">
<span< span=""> class="btn-fav id="fav">.....

那么我该如何解决这个问题呢?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    你可以使用html方法,html接受一个函数,你可以找到第一个单词并用span元素包裹它。

    $('h1 .the-title').html(function(i, html){
       return html.replace(/(\w+\s)/, '<span class="black">$1</span>')
    })​;
    

    http://jsfiddle.net/AuKWT/

    请注意,您应该修复您的标记:

    <span id="fav" class="btn-fav"><a href="#"Add to fav</a></span>
                                       ------^
    

    $('.header-logo, h1').each(function() {
        var $this = $(this), $title = $this.find('.the-title');
        if ($title.length) {
            $title.html(function(i,h) {
                return h.replace(/(\w+\s)/, '<span class="black">$1</span>')
            })
        } else {
            $this.html(function(i,h) {
                return h.replace(/(\w+\s)/, '<span class="black">$1</span>')
            })
        }
    });
    

    【讨论】:

    • 你的意思是添加另一个jquery函数?
    • @pixelngrain 如果要选择 .the-title 元素,可以将选择器更改为 $('.header-logo, h1 .the-title')
    • 好的,我的问题是将 H1 用于其他目的,所以当我使用此代码时,它会从所有 H1 标签中删除黑色
    • @pixelngrain 您可能需要检查开发工具控制台(例如 firebug 控制台)以查看是否有任何错误,然后检查是否添加了类。此外,您可以尝试将其放在代码 console.log( $('.header-logo, h1') ); 中,以查看您所定位的元素是否确实存在于您的 html 中。
    • 哇,它完成了。那是我的愚蠢错误。我对此感到非常抱歉。一切都很好,但是什么改变了我没有创建的类的颜色。 :P 这真是太棒了。非常感谢您的大力帮助 :) 选择回答并再次感谢 +1。
    【解决方案2】:

    我猜您正在尝试更改任何指定类元素的首次出现的颜色。为此,您无需更改整个 HTML

     $('.header-logo h1 ').find('.the-title').html(function(i, h){
        return h.replace(/\w+\s/, function(firstWord){
          return '<span style="color:Green;font-weight:bold">' + firstWord + '</span>';
        }); 
     });
    

    【讨论】:

    • $(this).first().html('&lt;span style="color:black;"&gt;' + h.substring(0, index) + '&lt;/span&gt;' + h.substring(index, h.length)); 我试过这个但没有用。我不确定我做对了还是错了。 Jwuery 新手
    • ` $('.heder-logo, h1').each(function() { var ele = $('.heder-logo, h1').first(), h = ele. html(); var index = h.indexOf(' '); if(index == -1) { index = h.length; } ele.html('' + h. text() + ''); });` 还是没有。我做得对吗?
    • @pixelgrain 你想改变 DOM 中第一个 .the-title 的颜色吗?
    • 是的,看看我@Undefined 回复的这段代码。这就是我现在正在寻找的内容,也需要更改“页面标题”的第一个单词颜色
    • @pixelngrain 现在查看我的编辑。它将第一个 the-title 颜色更改为黑色
    猜你喜欢
    • 2015-03-16
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 2021-09-12
    • 2011-11-05
    • 2015-02-11
    • 2018-09-22
    相关资源
    最近更新 更多