将方法添加到JQuery元素是否不合适?自定义JQuery元素
如:
var b = $("#uniqueID");
b.someMethod = function(){};
更新
只是为了澄清,我在一个JS驱动的应用程序,是有约束力的JSON数据封装业务逻辑操纵本地JS对象工作实际的底层DOM元素。这些对象当前存储对其关联的HTML元素的引用。实际上,我可以通过引用add添加所需的方法来合并jQuery元素的特定与其逻辑。
将方法添加到JQuery元素是否不合适?自定义JQuery元素
如:
var b = $("#uniqueID");
b.someMethod = function(){};
更新
只是为了澄清,我在一个JS驱动的应用程序,是有约束力的JSON数据封装业务逻辑操纵本地JS对象工作实际的底层DOM元素。这些对象当前存储对其关联的HTML元素的引用。实际上,我可以通过引用add添加所需的方法来合并jQuery元素的特定与其逻辑。
好
$.fn.someMethod = function(options) {
# ...
});
称呼它,没有什么内在的错误吧。然而,这是毫无意义的。例如:
$('body').someMethod = function(){};
console.log($('body').someMethod); // undefined
您只将新功能附加到该选择,而不是附加到该元素的所有选择。
你应该做的,而不是为一个新的功能添加到jQuery.fn
,这是jQuery.prototype
快捷方式:
jQuery.fn.someMethod = function() {
if (this[0].nodeName == 'body') {
// do your function
}
return this; // preserve chaining
};
或者你可以创建一个jQuery插件。您可以定义一个插件是这样的:使用$('body').someMethod();
的问题是,你的功能将是非常短暂的。进一步的需求,它将会消失。您可以通过$ .fn.someMethod = function(){}扩展jQuery对象本身,并且此方法将适用于所有查询。
$.fn.someMethod = function() {}
var b = $("body");
b.someMethod();
你可以扩展你在这里实际试图达到什么吗? –