语法错误,无法识别的表达式:$ {languageLabel}

时间:2013-04-08 00:41:26

标签: javascript jquery

尝试更改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} **

1 个答案:

答案 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}}包含其他文字,则不会提供预期结果,因为所有文字都将被替换,因此您需要确保${...}包含在自己的${...}中。