我只是想获取字段属性的当前值。
该字段有一个默认值,例如:
<input validation="defaultValue" />
当我想获取验证属性时,我不知道它之前是否已更新过,或者这是否仍然是默认值。
因此,当属性未设置(尚未更新)时,通过 prop()
获取的属性返回 undefined
,并且 attr()
> 方法总是返回默认值(实际上对于可维护性来说这不是真的,但将来会是这样)。
有没有一种方法可以检查:
如果设置了属性=>返回属性 否则返回属性
谢谢
最佳答案
这段代码可以做到:
var input = $("input");
var method = typeof input.prop("validation") != "undefined" ? "prop" : "attr";
input[method]("validation");
//Shortened to:
var input = $("input");
input[typeof input.prop("validation")!="undefined"?"prop":"attr"]("validation");
说明:
- 如果未设置属性
typeof ... "undefined"
,则返回"prop"
字符串。否则,"attr"
字符串将返回。 - 此字符串用于选择
input
对象的正确方法,可以是input["prop"]
(=input.prop
) 或input["attr"]
(=input.attr
)。 - 最后,调用该方法,传递
“validation”
作为参数,结果是:
- 属性(property)(如果存在)或
- 属性(如果该属性不存在)。
我建议使用data-validation
而不是validation
,以符合 HTML5 标准。
更新:JQuery 方法:
(function($){
/* Defines the curProp method - Getting the current property
* When the property exists, the prop method is used. Otherwise: attr */
$.fn.curProp = function(name){
return this[typeof this.prop(name) == "undefined" ? "attr" : "prop"](name);
}
})(jQuery);
关于jquery 未设置属性时获取属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7689757/