试图用打字稿在 DOM 上找到一个元素

trying to find an Element on DOM with typescript

我完全是打字稿的新手。我只是想找到一个带有选择器的元素。无论我尝试 findElement() 方法总是变成未定义的。我哪里做错了? 非常感谢任何帮助!

var cdnBasePath: any = this.findElement('meta[name="cdnBasePath"]').attr('content');

public findElement(selector: any) {

            if (angular.isDefined(this.$window.jQuery)) {
                return this.$document.find(selector);
            } else {
                return angular.element(this.$document.querySelector(selector));
            }

        }

为了定义 "this",您必须将 findElement 声明为某些 class 的实例方法。像这样:

class SomeClass
{
    public SomeMethod() 
    {
        var cdnBasePath: any = this.findElement('meta[name="cdnBasePath"]').attr('content');
    }

    public findElement(selector: any) 
    {
        if (angular.isDefined(this.$window.jQuery)) {
            return this.$document.find(selector);
        } else {
            return angular.element(this.$document.querySelector(selector));
        }
    }
}

否则你可以将其作为静态方法:

class UI
{
    public static findElement(selector: any) 
    {
            if (angular.isDefined(this.$window.jQuery)) {
                return this.$document.find(selector);
            } else {
                return angular.element(this.$document.querySelector(selector));
            }
    }
}

var cdnBasePath: any = UI.findElement('meta[name="cdnBasePath"]').attr('content');

或者直接删除 'this' 并将其作为全局函数(我不推荐这样做)

function findElement(selector: any) 
{
    if (angular.isDefined(this.$window.jQuery)) {
        return this.$document.find(selector);
    } else {
        return angular.element(this.$document.querySelector(selector));
    }
}

var cdnBasePath: any = findElement('meta[name="cdnBasePath"]').attr('content');

希望对您有所帮助。