0

好吧,我对女巫说“$ .Recup ...”这行感到困惑,我不知道为什么它与插件名称相同以及它的用途。

(function ($) {
    $.fn.Recup = function () {
        var parametros = {

        };
        var tsic = true;
        $.Recup = function (opciones) {

            var Metodos = {

            };
            return Metodos;
        };
        $.Recup.anterior = function () {

        };
        $.Recup.siguiente = function () {

    }

   })(jQuery);

我指的是这段代码,究竟$.Recup是做什么的?如果有人给我一个例子,那就完美了

         $.Recup = function (opciones) {

                var Metodos = {

                };
                return Metodos;
            };
4

2 回答 2

2

在这种情况下,它似乎是一个有问题的插件设计 -特别是因为$.Recup直到$.fn.Recup第一次调用才分配。

但是,如果它“写得恰当和/或写得好”是另一个需要(预期)使用上下文的问题。对于它的价值,我会拒绝这样编写的代码,因为它闻起来有被误解的设计和广泛的副作用。


无论如何,分配函数的方式决定了如何调用该方法。

// let $ be jQuery, then:
$.fn.foo = function () { console.log("foo") }
$.bar    = function () { console.log("bar") }

$.foo()        // TypeError: $.foo is not a function
$.bar()        // -> "bar"
$("sel").foo() // -> "foo"
$("sel").bar() // TypeError: $(..).bar is not a function

也就是说,$.fn.foo就像.each()- 它根据当前选择的元素(由 表示this)做一些事情。另一方面,$.bar就像jQuery.each()- 它提供了一种迭代一般集合的方法,但与一组特定的(以前的)选定元素无关。

一般来说,插件应该添加一个条目到$.fn,但直接添加到$ 可能对公开实用功能有用 - 绝对应该小心完成。


以下是解决错误泄漏数据问题的两种方法:

$.fn.Recup = function () {
    var parametros = ..
    var tsic = true;
    // Most trivial change; then use recup in this scope
    // (or child scopes) only. There is no $.Recup - yay!
    var recup = function (opciones) {
    };
    // ..
}

或者,只是公开为本地方法:

$.fn.Recup = function () {
    var parametros = ..
    var tsic = true;
    function anterior () {
    }
    function siguiente () {
    }
    // Just use simple functions in scope
}
于 2013-06-01T21:31:58.013 回答
0

这是一个 jQuery 插件。

jQuery.fn是 jQuery 原型的别名。所以这一行可以让你Recup在 jQuery 的实例上调用函数:

$('#myid').Recup();

这是有关创建 jQuery 插件的文档

于 2013-06-01T18:39:16.013 回答