有可能吗?
例如:
jQuery.fn.data.toNumber = function(attr) {
return Number(this.attr("data-" + attr));
// Where "this" mean each DOMElement.
}
所以我可以这样称呼:
var number = $(document.body).data.toNumber("value");
// Act like: Number($(document.body).attr("data-value"))
答案 0 :(得分:4)
以这种方式不能(合理地*),因为this
在调用期间不会引用jQuery实例(它将引用data
功能)。
您可能会考虑使用更标准的插件方法,例如:
jQuery.fn.dataAsNumber = function(attr, value) {
if (typeof value !== "undefined") {
// Setter
this.data(attr, value);
return this;
}
// Getter
return +this.data(attr);
};
用法:
var number = $(document.body).dataAsNumber("value");
*好的,只是为了完整性:它是可能的,但不合理。您必须破解jQuery.fn.init
才能使其正常运行。我强烈建议不要这样做。