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

时间:2014-07-29 12:31:49

标签: javascript jquery html

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

例如:

<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

此特定方法对于Internet Explorer都可以。当涉及到chrome和firefox时,notNull,isDate被视为属性而不是属性,上面的hasProp方法总是返回false。

我确实经历了很多问题,但是找不到任何方法可以单一方式访问属性和属性 - 我更喜欢使用jQuery,因为我们最终会迁移到jQuery。 / p>

任何对此的指示都会非常有用。

谢谢, 的Reema

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我更喜欢纯粹的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");
        }
      }
    }

查看 working example here

Here is some more information on the getAttribute() method.

答案 2 :(得分:0)

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

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

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

所以,在你的情况下:

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

请参阅this JS-Fiddle