将方法添加到JQuery元素是不可取的吗?
例如:
var b = $("#uniqueID");
b.someMethod = function(){};
更新
为了澄清,我正在开发一个JS驱动的应用程序,它将JSON数据绑定到本地JS对象,这些对象封装了用于操作实际底层DOM元素的业务逻辑。对象当前存储对其关联的HTML元素的引用。我想我实际上可以通过引用添加所需方法的引用来合并jquery元素的特定实例和它的逻辑。
答案 0 :(得分:2)
嗯,这没有什么本质上的错误。然而,这是毫无意义的。例如:
$('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
};
答案 1 :(得分:2)
问题是你的功能会非常短暂。进一步的问题,它将消失。您可以通过$ .fn.someMethod = function(){}扩展jQuery对象本身,并且此方法可用于所有查询。
$.fn.someMethod = function() {}
var b = $("body");
b.someMethod();
答案 2 :(得分:0)
或者你可以创建一个jQuery插件。您可以通过以下方式定义插件:
$.fn.someMethod = function(options) {
# ...
});
使用$('body').someMethod();