在结果中按函数制作jquery插件

时间:2012-12-19 22:38:00

标签: jquery plugins

我正在尝试创建一个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'

1 个答案:

答案 0 :(得分: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')"
    });