访问jquery/javascript中的属性和属性

Accessing attributes and properties in jquery/javascript

本文关键字:属性 javascript jquery 访问      更新时间:2023-09-26

我有一个现有的应用程序,它使用javascript和属性,如notNull, isDate等在html元素中定义的元素,如输入,选择等

例如:

<input type = 'text' notNull class='mandatoryField' name = 'abc' id='abc' isDate/>

javascript使用hasProp方法检查属性,将代码放在下面,并显示相应的警告消息:

function hasProp(thisField, thisProp) {
for ( var prop in thisField) {
    if (prop == thisProp)
        return true;
}
return false;
}

我的问题是使用不同的浏览器- IE, Chrome和Firefox

这些特殊的方法对于ie来说都是可以的。当涉及到chrome和firefox时,notNull, isDate被视为属性而不是属性,并且上面的hasProp方法总是返回false。

我确实在这里做了很多可用的问题,但没有找到任何方法可以同时访问属性和属性-我更喜欢使用jQuery,因为我们最终将迁移到jQuery。

任何指向这个的指针都会很有帮助。

谢谢,瑞玛·

我认为你使用属性属性的方式不是100%准确的,属性(.prop())在jQuery上下文中基本上是属性在内存中的值,其中.attr()反映了标记中的值。这只适用于"内置"的HTML属性。在你的例子中,你一直在处理属性,只是有些属性没有任何值。

检测属性存在的最佳方法,使用jQuery跨浏览器:

$('#myElement').is('[attrName]') === true

那么,在你的例子中:

$('#abc').is('[isDate]') === true

查看JS-Fiddle

如果你想要一个jQuery解决方案,你可以使用jQuery.attr()和jQuery.prop()方法来解决你的问题。

我更喜欢纯Javascript方法:

var attributes = ['notNull', 'isDate'],
    checkForAttribute = function(elem){
      for(var i = 0, c = attributes.length ; i < c ; i++){
        if(elem.getAttribute(attributes[i]) !== null){
          console.log("attribute " + attributes[i] + " found");
        }else{
          console.log("attribute " + attributes[i] + " not found");
        }
      }
    }

请参阅此处的工作示例

下面是关于getAttribute()方法的更多信息