我想通过jq获取ng-show的值,但这不是我期望的结果

时间:2018-12-21 11:52:24

标签: javascript angularjs

我可以打印出所有ng-show值,但无法过滤出想要的内容。
我不知道这是正则表达式错误还是angularjs。我直接在开发人员工具中尝试过,结果成功。
请检查Codepen中的完整代码,谢谢

var thList = $('thead').find('th');
        var fieldPattern = /\'(.*)\'.*\|.*/g;
        var allTableField = [];
        var valueList = [];
        angular.forEach(thList, function(th) {
            var value = $(th).attr('ng-show');
            console.log(value);
            if (/showField/g.test(value)) {
                valueList.push(value);
                var results = fieldPattern.exec(value);
                if (results) {
                    allTableField.push(results[1]);
                }
            }
        });

Codepen

对不起,我的英语很糟,很难表达。
我想通过JQ获取ng-show值,并过滤出与正则表达式匹配的值。
最后,我只得到了一部分。

enter image description here

1 个答案:

答案 0 :(得分:0)

因此,您的valueList比您的allTabField包含更多的“值”,其余的值由正则表达式fieldPattern过滤

编辑:

使用RegExp构造函数,例如var fieldPattern = new RegExp("\'(.*)\'.*\|.*");

替代解决方案:

angular.forEach(thList, function(th) {
                    var value = $(th).attr('ng-show');
                    console.log(value);
                    if (/showField/g.test(value)) {
                        valueList.push(value);
                        /* changes are made here */
                        var index = value.indexOf('|');
                        var results = value.substring(1, index - 1);
                        if (results) {
                            allTableField.push(results);
                        }
                        /* End of changes */
                    }
                });