Javascript element.is()在Angular jqLite中等效

Javascript element.is()在Angular jqLite中等效,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,有没有办法找出Angular/jqLite中元素的类型(在本例中,如果是输入或文本字段),或者需要jQuery来完成这项工作 代码是: .directive('localize', ['localize', function(localize) { return { link: function(scope, element, attrs) { scope.$on('languageChange', function() {

有没有办法找出Angular/jqLite中元素的类型(在本例中,如果是输入或文本字段),或者需要jQuery来完成这项工作

代码是:

.directive('localize', ['localize', function(localize) {
    return {
        link: function(scope, element, attrs) {
            scope.$on('languageChange', function() {
                var localizedText = localize.localizeText(scope.sourceText);
                if (element.is('input, textarea')) { //<--- this right here
                    element.attr('placeholder', localizedText);
                } else {
                    element.text(localizedText);
                }
            });
        }
    };
}])
指令('localize',['localize',函数(localize){ 返回{ 链接:函数(范围、元素、属性){ 作用域:$on('languageChange',function()){ var localizedText=localize.localizeText(scope.sourceText);
如果(element.is('input,textarea'){/您可以使用.tagName,请参见此处


虽然这并不能解决所有的
is()
等价问题,但它提供了一种确定指令链接中元素类型的简单方法:

attrs
还包含名为
type
的属性,该属性将包含元素类型:

.directive('localize', ['localize', function(localize) {
    return {
        link: function(scope, element, attrs) {
            scope.$on('languageChange', function() {
                var localizedText = localize.localizeText(scope.sourceText);
                if ( 'input' == attrs.type || 'textarea' == attrs.type ) {
                    element.attr('placeholder', localizedText);
                } else {
                    element.text(localizedText);
                }
            });
        }
    };
}])

如果({input:1,textarea:1}[元素[0].标记名.toLowerCase()]){…}@davdavis非常感谢,这是正确的答案。请将您的解决方案作为答案发布,这样我就可以接受!@dandavis也可以告诉我您使用了什么sytnax吗?它可以工作,但我以前从未见过。它被称为查找表,当您需要将一个值与上述值之一进行比较时,它可以替换开关。非常有用,非常感谢!:)奇怪的是,这也给了我未定义的元素,但是使用
元素[0]获取jqLite对象的基本元素.tagName
如所建议的那样工作得很好。@TheRebel,没错,我犯了输入错误,元素返回object数组,所以您必须检查案例中的First object。@sss,感谢您更正此问题,如果dandavis没有将其解决方案作为正确答案发布,我会将您的解决方案设置为acceptedPerfect,以适合此用例,但似乎不是exact可选用于.is和JQuery的所有用例
.directive('localize', ['localize', function(localize) {
    return {
        link: function(scope, element, attrs) {
            scope.$on('languageChange', function() {
                var localizedText = localize.localizeText(scope.sourceText);
                if ( 'input' == attrs.type || 'textarea' == attrs.type ) {
                    element.attr('placeholder', localizedText);
                } else {
                    element.text(localizedText);
                }
            });
        }
    };
}])