-1

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

所以总结一下,基本上我想将 ${languagelabel} 的 textnode 的 textValue 更改为语言,但我得到错误为 ** Syntax error, unrecognized expression: ${languageLabel}**

4

1 回答 1

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包含${...}也包含其他文本,它不会给出预期的结果,因为所有文本都将被替换,因此您需要确保${...}包含在它自己的textNode.

于 2013-04-08T01:57:05.160 回答