好吧,我对女巫说“ $ .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;
            };

最佳答案

在这种情况下,这似乎是一个有问题的插件设计-特别是因为在第一次调用$.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
}

关于javascript - Jquery.Recup是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16875996/

10-09 19:05