我只能弄明白如何处理jQuery替换是将特定文本替换为特定文本。 不幸的是,我无法用变量做到这一点。
这是我想要做的一个例子:
$("#id").html($("#id").html().replace(/myVariableHere/g, 'hello'));
myVariableHere - 这是我想要变量的地方。如果我在那里硬编码文本,一切正常。但是因为这个值是动态的(取决于你点击的内容),我必须在那里放一个变量,而不是一个硬编码的单词...... 我的语法出了什么问题?
提前致谢! :)
答案 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)作为包含要替换的文本的对象