我有以下 HTML:
<span class="drop_cap">3 <span>Dinners</span></span>
我想替换第一个字符。数字会根据用户交互而变化,所以我不能只抓住“3”
我试过了:
$("drop_cap").text().substr(0,1).replace(var);
和
$("drop_cap").html().substr(0,1).replace(var);
和类似的事情。
TIA
jQuery 不太擅长处理文本节点。由于您知道要编辑跨度内的第一个节点(文本节点),因此可以执行以下操作。
// This inserts 100 in front of that text node inside drop_cap
$("span.drop_cap").each(function(){
this.firstChild.nodeValue = "100" + this.firstChild.nodeValue;
});
这是一个使用的示例String.replace
$("span.drop_cap").each(function(i){
this.firstChild.nodeValue = this.firstChild.nodeValue.replace(/\d/, i);
});
示例: http: //jsfiddle.net/rLGPW/2/,http : //jsfiddle.net/rLGPW/3/
解决方法,这更容易,特别是如果您只使用数字:
<input id='number' type='text' readonly='readonly' value='3'>
现在您可以使用 J-QUERY 更改输入的值,这比尝试更改 html 的错误少很多。
$("#number").val(var);
并确保你 css 输入框,因为默认情况下它具有时髦的输入框样式
如果你知道总是有一个数字,然后只有一些文本,我想你可以使用一个简单的正则表达式来提取数字:
var num = $('span.drop_cap').text().match(/\d+/)[0]