这与其他问题类似,但它是针对具体的事情。
第一个例子没有做任何事情(休息)
第二个例子有效,只是它会破解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>');
});
答案 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>'));
});