1

我有以下 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

4

3 回答 3

2

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/

于 2012-11-14T23:28:34.400 回答
0

解决方法,这更容易,特别是如果您只使用数字:

<input id='number' type='text' readonly='readonly' value='3'>

现在您可以使用 J-QUERY 更改输入的值,这比尝试更改 html 的错误少很多。

$("#number").val(var);

并确保你 css 输入框,因为默认情况下它具有时髦的输入框样式

于 2012-11-14T23:15:21.060 回答
0

如果你知道总是有一个数字,然后只有一些文本,我想你可以使用一个简单的正则表达式来提取数字:

var num = $('span.drop_cap').text().match(/\d+/)[0]
于 2012-11-14T23:32:08.747 回答