向JQuery元素添加方法是否不可取?
例:
var b = $("#uniqueID");
b.someMethod = function(){};更新
为了澄清,我正在开发一个JS驱动的应用程序,它将JSON数据绑定到本地JS对象,该对象封装了用于操作实际底层DOM元素的业务逻辑。对象当前存储对它们关联的HTML元素/s的引用。我在想,实际上我可以将jquery元素的特定实例与它的逻辑合并,方法是使用该引用添加所需的方法。
发布于 2011-01-11 08:40:48
好吧,它本身没有什么问题。然而,这是毫无意义的。例如:
$('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
};发布于 2011-01-11 08:41:38
问题是你的功能是非常短暂的。再来一次请求,它就会消失。您可以通过jQuery = function() {}扩展$.fn.someMethod对象本身,该方法将适用于所有查询。
$.fn.someMethod = function() {}
var b = $("body");
b.someMethod();发布于 2011-01-11 08:39:40
或者你可以创建一个jQuery插件。您可以这样定义插件:
$.fn.someMethod = function(options) {
# ...
});使用$('body').someMethod();调用它
https://stackoverflow.com/questions/4655639
复制相似问题