为 jQuery 编写一个命名空间函数,该函数对参数而不是选择器进行操作

发布于 2024-12-14 03:22:16 字数 1148 浏览 2 评论 0原文

我一直在尝试在 jQuery 中启动一个函数库,以便在我的代码中横向使用
我认为这样做的一个好方法是构建一个 jQuery 命名空间并添加 my
其下的方法(并为所有愿意贡献的人提供命名空间)。
这就是我想到的:

(function( $ )
{
    $.extend
    ({
        mynamespace:
        {
            myfunction: function(a, b)
            {
                if (!Math.prototype.newmethod)
                {
                    Math.prototype.newmethod = function(c, d)
                    {
                        // newmethod code
                    }
                }
                // myfunction code (uses Math.newmethod)
            }
        }
    })
})(jQuery);

现在这在我最初调用它的小测试文件中工作得很好(代码做了我想要的事情),但执行后我得到了以下错误:

DOM 异常:
INVALID_CHARACTER_ERR (5)

我忽略了它,不确定它来自哪里,也不知道如何修复它(我在网上找到的一些参考资料与我没有使用的 IE9 相关)但是当我在站点范围内使用了我的新代码,一切都开始中断,并出现错误消息,例如

未捕获类型错误:未定义不是函数

并且

未捕获类型错误:对象函数 (c, d) { // 新方法代码 }

欢迎任何关于我做错了什么的想法

PS
我调用上述代码的方式是:

var temp = $.mynamespace.myfunction(a, b);    

I've been tying to start a library of functions in jQuery to use transversally in my code
I thought that a good way of doing this would be to build a jQuery namespace and add my
methods under that (and provide the namespace for all who would like to contribute).
This is what I came up with:

(function( $ )
{
    $.extend
    ({
        mynamespace:
        {
            myfunction: function(a, b)
            {
                if (!Math.prototype.newmethod)
                {
                    Math.prototype.newmethod = function(c, d)
                    {
                        // newmethod code
                    }
                }
                // myfunction code (uses Math.newmethod)
            }
        }
    })
})(jQuery);

Now this worked fine in the small test file where I originally called it (the code did what I wanted it to) but after execution I got the following error:

DOM Exception:
INVALID_CHARACTER_ERR (5)

I ignored it, not being sure where it was coming from nor how to fix it (the few references I found on the web associated the problem with IE9 which I was not using) but when I used my new code site-wide everything started breaking with error messages such as

Uncaught TypeError: undefined is not a function

and

Uncaught TypeError: Object function (c, d) { // newmethod code }

Any ideas as to what I'm doing wrong are welcome

P.S.
The way I call the code described above is:

var temp = $.mynamespace.myfunction(a, b);    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文