jquery - 从元素中获取数字并用 span 换行

标签 jquery css text textnode

我希望缩进一个数字,但是从我的 cms 生成的 html 我似乎无法连接到数字并应用样式。

<div class="content">
<b>01. Header</b>
Lorem ipsum dolor sit amet, consectetur 
adipisicing elit, anim odio hic autem 
delectus qui labore rerum irure autem 
</div>

我想将数字包装在一个跨度中。所有的内容都是一样的。 02.[空格]标题

<div class="content">
<span="indent">01. </span><b>Header</b>
Lorem ipsum dolor sit amet, consectetur 
adipisicing elit, anim odio hic autem 
delectus qui labore rerum irure autem 
</div>


.indent{
    margin-left: -30px;
}

这是我已经开始的,但我似乎无法将它修剪到前 3 个字符,包括空格。

 $('.content b').each(function() {
var tmp = [],
    collecting = false;

$(this).contents().each(function() {
    if (this.nodeType === Node.TEXT_NODE && $.trim(this.nodeValue).length > 0) {
        if (collecting) {
            tmp.push(this);
            return false;
        }
        else {
            collecting = true;
        }
    }

    if (collecting) {
        tmp.push(this);
    }
});

$(tmp).wrapAll('<span class="indent" />');
});​

http://jsfiddle.net/hGeuZ/

最佳答案

为此,我建议的一种方法是:

$('.content b:first-child').replaceWith(
    function(i,h){
        return h.replace(/(\d+.\s)([\d\D]*)/g,'<span class="indent">$1</span><b>$2</b>');
    });​

JS Fiddle demo .

如果 CSS 是一个选项:

.content {
    counter-increment: headerNumber;
}

.content b:first-child::before {
    content: counter(headerNumber, decimal-leading-zero);
    padding-right: 2em;
    color: #f90;
}​

JS Fiddle demo .

关于jquery - 从元素中获取数字并用 span 换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12506687/

相关文章:

html - 有条件地禁用 JQuery 日期选择器上的星期几?

用于交换元素的 Javascript 与 CSS

php - 如何在 WordPress 中显示推荐自定义帖子类型?

WPF - 普通的最佳实践 [标签 :Input] Control

javascript - 在 JavaScript 中索引 HTML div 类

javascript - javascript 中的线程

jquery - 这是有效的 jquery getJSON 调用吗?

opacity - 有什么方法可以使文本阴影不显示在文本后面?

python - 文本提取项目 - 仅从 PDF 中提取特定行/项目的最佳工具?

mysql - php 生成的文本和键盘编写的文本看起来相同,但 diff(和 MySQL 查询)有 100% 不同