jQuery - 用变量值替换文本中的单词

时间:2011-10-04 14:28:08

标签: jquery replace innerhtml

我只能弄明白如何处理jQuery替换是将特定文本替换为特定文本。 不幸的是,我无法用变量做到这一点。

这是我想要做的一个例子:

$("#id").html($("#id").html().replace(/myVariableHere/g, 'hello')); 

myVariableHere - 这是我想要变量的地方。如果我在那里硬编码文本,一切正常。但是因为这个值是动态的(取决于你点击的内容),我必须在那里放一个变量,而不是一个硬编码的单词...... 我的语法出了什么问题?

提前致谢! :)

4 个答案:

答案 0 :(得分:2)

RegExp对象而不是文字形式:

var patt=new RegExp(myVariableHere,'g');
$("#id").html($("#id").html().replace(patt, 'hello')); 

答案 1 :(得分:0)

为什么要使用Regexes?

$("#id").html($("#id").html().replace(myVariableHere, 'hello'));

答案 2 :(得分:0)

请注意,当您对元素的HTML内容进行替换时(这是.html()返回/设置的内容),您实际上正在替换HTML代码,包括标记名称,类等。因此,如果您要替换的文本恰好是HTML标记或类名,则可以破坏文档。为避免这种情况,遍历父元素的子节点并仅在文本节点上执行替换:

function replaceText($elem, text, replacement) {
    // Check if the element has just one child, and the child is a text node
    if ($elem[0].childNodes.length == 1 && $elem[0].firstChild.nodeType == 3)
        $elem.text($elem.text().replace(text, replacement));
    else
        // Call the replacement function on each child element
        $elem.children().each(function () {
            replaceText($(this), text, replacement);
        });
}

答案 3 :(得分:0)

我使用了下面的代码段

$(this).text($(this).text().replace(old_word, new_word));

使用$(this)作为包含要替换的文本的对象