jquery 未设置属性时获取属性值

标签 jquery

我只是想获取字段属性的当前值。

该字段有一个默认值,例如:

<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”作为参数,结果是:
    1. 属性(property)(如果存在)
    2. 属性(如果该属性不存在)。

我建议使用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/

相关文章:

php - 在 php 和 js 中设置 JSON

javascript - 如果 slider 从头开始,Coda-Slider 不应滑回所有元素

javascript - 如何使用 in-view.js 检测元素何时滚动到视口(viewport)中

jquery - 为什么 jQuery ajax (JSONP) 在没有 `&callback=` 的情况下可以工作,但会因 `&callback=functionname` 而失败

尝试仅获取 <option> 元素时发生 jQuery 未定义错误

javascript - 如何设置电话号码、邮政编码等的格式而不显示掩码?

jquery - 在对话框中调试 jQuery 代码

javascript - 在一个div中水平居中几个不同宽度的div

jquery - 如何在 Electron 中使用 fs 保存 PDF 文件?

javascript - 为什么 jQuery 或诸如 getElementById 之类的 DOM 方法找不到元素?