我用jQuery构建了一个find和replace函数。 (See functional example here)在您考虑格式化标记之前,它很有效。
假设以下html:
Here <i>is</i> my <b>sample</b> text
如果您搜索sample text
,则由于粗体标记而导致搜索失败。
可接受的结果是删除<b>sample</b> text
,将其替换为您为替换输入的内容。它应该单独留下斜体标签。怎么能实现呢?
这是我到目前为止所拥有的:
function findandreplace() {
var text = $('.editor').html(),
find = $('#find').val(),
replace = $('#replace').val(),
newText = text.replace(new RegExp(find, "g"), replace)
$('.editor').html(newText);
}
答案 0 :(得分:0)
您可以使用text()
忽略标记并替换文本,但不能保留标记。这是你想要的吗?
function findandreplace() {
var text = $('.editor').text(),
find = $('#find').val(),
replace = $('#replace').val(),
newText = text.replace(new RegExp(find, "g"), replace)
$('.editor').html(newText);
}
编辑:这个符合要求,但我们可以进一步推广/优化所需的标签。
function findandreplace() {
var find = $('#find').val(),
replace = $('#replace').val()
$('.editor').find('b').contents().unwrap();
var text = $('.editor').html();
var newText = text.replace(new RegExp(find, "g"), replace)
$('.editor').html(newText);
}