首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义JQuery元素

自定义JQuery元素
EN

Stack Overflow用户
提问于 2011-01-11 08:35:39
回答 3查看 65关注 0票数 3

向JQuery元素添加方法是否不可取?

例:

代码语言:javascript
运行
复制
var b = $("#uniqueID");
b.someMethod = function(){};

更新

为了澄清,我正在开发一个JS驱动的应用程序,它将JSON数据绑定到本地JS对象,该对象封装了用于操作实际底层DOM元素的业务逻辑。对象当前存储对它们关联的HTML元素/s的引用。我在想,实际上我可以将jquery元素的特定实例与它的逻辑合并,方法是使用该引用添加所需的方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-11 08:40:48

好吧,它本身没有什么问题。然而,这是毫无意义的。例如:

代码语言:javascript
运行
复制
$('body').someMethod = function(){};
console.log($('body').someMethod); // undefined

您只将新函数附加到该选择,而不是附加到该元素的所有选择。

您应该做的是向jQuery.fn添加一个新函数,这是jQuery.prototype的一个快捷方式。

代码语言:javascript
运行
复制
jQuery.fn.someMethod = function() {
    if (this[0].nodeName == 'body') {
        // do your function
    }

    return this; // preserve chaining
};
票数 2
EN

Stack Overflow用户

发布于 2011-01-11 08:41:38

问题是你的功能是非常短暂的。再来一次请求,它就会消失。您可以通过jQuery = function() {}扩展$.fn.someMethod对象本身,该方法将适用于所有查询。

代码语言:javascript
运行
复制
$.fn.someMethod = function() {}
var b = $("body"); 
b.someMethod();
票数 2
EN

Stack Overflow用户

发布于 2011-01-11 08:39:40

或者你可以创建一个jQuery插件。您可以这样定义插件:

代码语言:javascript
运行
复制
$.fn.someMethod = function(options) {  
    # ... 
});

使用$('body').someMethod();调用它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4655639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档