-3

我正在尝试创建一个 jQuery 插件。

$.fn.examplePlugin = function(callback) {
    $.item = $(this);
    $(this).hide('fast',function () {
        callback('bla');
    });

    function show(a) {
       alert(a);
    }    

}

并使用

$('form').examplePlugin(function(data)) {
    this.show(data); // need to return alert 'bla'
});

需要返回警报“bla”

4

1 回答 1

0

在您编辑之后,您的代码几乎可以完成您想要做的事情。只有几个问题:

  1. 这条线的目的是什么?

    $.item = $(this);
    

    您正在$引用元素的 jQuery 对象(别名)中创建一个字段。如果您调用插件 N 次,该字段将被覆盖 N 次。无论您试图完成什么,这都不是实现它的方法。

  2. 您的功能show仅在闭包内部可用function(callback) { ... },您无法从外部访问它。调用this.show不会做任何事情,你不应该尝试添加成员,this因为它引用了一个 DOM 元素。

    对于“正确”的做法,我建议阅读一些关于插件创作的教程,但作为一种快速解决方法,你为什么不将show函数作为参数传递给回调呢?

    $(this).hide('fast',function () {
        callback(show, 'bla');
    });
    
    ...
    
    $('form').examplePlugin(function(show, data) {
        show(data); // will perform (not return) "alert('bla')"
    });
    
于 2012-12-19T23:01:19.770 回答