微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用NameSpace创建jQuery元素方法

我只想说,我想分支我的插件,并决定我能够“命名”它们.到目前为止,将$.method重写为$.namespace.method很容易.

我遇到的问题是制作元素方法,如$(‘element’).method(),但要使用命名空间;例如$(‘element’).namespace.method().我已经尝试了一些解决方法并且可以创建$.fn.namespace.method,但是,当我从该方法调用它时,我只获得$.fn.namespace而不是我想要获得的’element’ .

示例:如果我调用$(‘body’).namespace.test(),那么在方法测试中,我希望这是元素< body>< / body>

任何帮助搞清楚如何拉这个非常赞赏.可能只是像往常一样过度思考问题.

目前为尝试可能的解决办法,比如$(‘body’).namespace().method(),到目前为止,效果不好……:P

解决方法

如果您不需要与IE8兼容,则可以使用 Object.defineProperty.

工作范例:

Object.defineProperty($.fn,'namespace',{
  get: function(){
    var t = this;
    return {
      lowercasehtml: function(){
         return t.html(function(_,h){ return h.toLowerCase() }); 
      }
    }
  }
});

$('#a').namespace.lowercasehtml(); // changes the html of #a to lowercase (yes,it's stupid,I kNow)

Demonstration

但我不相信像这样的命名空间是个好主意.我会简单地定义

$.fn.namespace_lowercasehtml = function() ...

这就是我个人为jQuery的应用程序特定扩展所做的事情.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐