尝试更改javascript模板表达式的textnode文本值时,控制台出错,即${foo}
的js
// this.textContent here gives ${languageLabel}
var variable = UI.patternMatch(textNodes_elRef);
$(variable).nodeValue ="language";
});
patternMatch : function(textNode) {
var templateRegex = /\${([\S\s]*?)\}/g;
return $(textNode).contents().filter(function() {
if($(this.textContent).match(templateRegex)){
// ** How do i return the textnode with only matched pattern**
}
总而言之,我想将textnode的$ {languagelabel}的textValue更改为语言,但我得到错误为**语法错误,无法识别的表达式:$ {languageLabel} **
答案 0 :(得分:1)
您可以只存储对匹配的textNode
实例的引用,并在循环之后返回它,并且您不必仅使用jQuery来修改textNode的nodeValue
属性。这是一个例子http://jsfiddle.net/LAud7/。
function patternMatch(el) {
var templateRegex = /\${([\S\s]*?)\}/g,
nodeFound;
$(el).contents().each(function() {
if (templateRegex.test(this.nodeValue)) {
nodeFound = this;
return false;
}
});
return nodeFound;
}
patternMatch($('#test')).nodeValue = 'replaced content';
请注意,使用此方法,如果包含textNode
的{{1}}包含其他文字,则不会提供预期结果,因为所有文字都将被替换,因此您需要确保${...}
包含在自己的${...}
中。