jquery regex .replace没有写给dom

时间:2013-11-18 00:59:43

标签: javascript jquery regex

所以我正在尝试规范化/清理内容中的格式:

<div class="content" contenteditable="true" data-placeholder="Type your entry">

    <p>djsalk fjsadlkjf sadfjlsadkfj</p>
    <p> </p>
    <div>laksdfj asdlkasdf&nbsp;</div>

</div>

使用以下js:

$('.content').html().replace(/\/div/g , '<p>');
$('.content').html().replace(/\/div/g , '</p>');
$('.content').html().replace('<p> </p>', '');

http://jsfiddle.net/pNzqY/

如果我手动在webinspector中运行这些行中的每一行,它将返回固定的字符串,但不会将其应用于dom。

我在这里缺少什么?

由于

2 个答案:

答案 0 :(得分:2)

replace函数生成一个新字符串。您需要手动将该新值重新分配给dom:

$('.content').html($('.content').html().replace(/\/div/g , '<p>'));

答案 1 :(得分:1)

在javascript字符串中是不可变的,jQuery的.html()返回一个字符串(不是对元素实际html的引用)。您必须在修改后设置html。使用jQuery执行此操作的一个好方法是调用.html() with a function and returning a value

$('.content').html(function(i, html) {
    return html.replace(/\/div/g , '<p>');
});

http://jsfiddle.net/pNzqY/1/