用span和.not()换行数字

时间:2014-07-08 20:01:01

标签: javascript jquery html

这与其他问题类似,但它是针对具体的事情。

第一个例子没有做任何事情(休息)

第二个例子有效,只是它会破解html标签(特别是a标签),所以href="something with numbers"被哈希,然后整个事情就崩溃了

然后我得到的锚点href属性与span标签混在一起。显然这不是我想要的。我究竟做错了什么?必须有一些方法可以将所有数字和“, - :()”放在span中,而不必散列html标签本身。

$('#main-content p').contents().not("a").html(function(i, v) {
    return v.replace( /([0-9(),-:]+)/g , '<span class="number">$1</span>');
});


$('#main-content p').html(function(i, v) {
    return v.replace( /([0-9(),-:]+)/g , '<span class="number">$1</span>');
});

1 个答案:

答案 0 :(得分:1)

您正在更换所有号码。您只需选择元素中的文本节点。此代码未经过测试,但应该可以使用。

编辑:您还必须调用.contents()。见this answer

编辑2:我在这个FIDDLE中得到了它。让我知道你的想法。你的意思是替换特殊字符和数字吗?....因为这是你原来的regEx目前正在发生的事情。

$('p').contents().filter(function () { return this.nodeType === 3; }).each(function(){
    $(this).replaceWith($(this).text().replace( /([0-9(),-:]+)/g , 
    '<span class="number">$1</span>'));
 });