着色标签中的子字符串

时间:2011-08-31 20:50:03

标签: javascript jquery

我有以下标签元素,我希望星号为红色。

<label> Lastname * </label>

如何使用jQuery或其他方式完成?

4 个答案:

答案 0 :(得分:2)

var label = document.getElementById('labelId');
label.innerHTML = label.innerHTML.replace('*', '<span style="color:red;">*</span>');

不需要汇编(也称为jQuery): - )

答案 1 :(得分:1)

如果你想要

,可以使用jQuery
$('#labelId').html( $('#labelId').text().replace('*', '<span style="color:red;">*</span>') );

答案 2 :(得分:1)

如果您可以更改文字,CSS可能是更好的选择:http://jsfiddle.net/VwLQM/

label:after {
    color: red;
    content: "*";
}

然后<label>test</label>会自动在其后面显示红色*

:after执行not fully work on IE8,因此这可能是一件重要的事情。

答案 3 :(得分:0)

虽然这可能有点复杂,但它确实给你一点摆动空间来标记元素中的红色星号,而不仅仅是文本内部的文字,并且可能会减少你在不同浏览器中的麻烦。

http://jsfiddle.net/QjJmT/

$(function(){

    var elements = $('label');
    var markup_element = $('<span class="red">*</span>');

    elements.each(function(){

        //wrap the element in a jquery object and get it's text string
            var element = $(this);    
            var element_text = element.text();

        //use regex to use the * as a delimeter
            var other_parts = element_text.split(/\*/);

        //empty the element re-add each part programmatically
            element.empty();
            for( var i = 0; i < other_parts.length; i++ ){
                element.append( other_parts[i] );
                if( i != other_parts.length - 1 ){
                    element.append( markup_element );
                }
            }

    });

});

希望有所帮助!