当前位置:  开发笔记 > 编程语言 > 正文

jQuery插件开发 - 将参数传递给用户定义的回调函数

如何解决《jQuery插件开发-将参数传递给用户定义的回调函数》经验,为你挑选了1个好方法。

提前谢谢大家.这是我第一次开发一个jQuery插件(并且第一次在javascript中开发实际上也是如此),我不得不说我非常了不起(它可能对你经验丰富的js/jquery开发人员有很多可怕的事情,但这是我的第一次尝试 - 请忍受我:).我也欢迎对任何代码进行任何建设性的批评.

这是一个模型框插件(是的,还有其他工作要求,但工作要求规定我自己编码以避免第三方依赖)显示给定的文本,来自ajax调用的文本或从ajax调用给出/获取的表单然后通过ajax处理表单提交.这需要尽可能自定义,所以我试图提供一些钩子(?? - 匿名函数),用户可以使用它来将自定义代码传递给插件.

我遇到的问题是为用户功能提供参数.如果我使用关键字'this',我可以传递'msg'变量,用户函数可以使用它.但是当我传递'msg'而不是'this'时,用户会得到一个空白变量.我想传递的不仅仅是msg - 也是在ajax调用中传递的数据数组,模型框的jQuery对象是我真正想做的事情.

下面是代码片段 - 该函数位于插件内部并在插件中调用; 我只是将一些代码分组到用于组织/开发目的的函数中.

    // Submits the form inside of the model box
    // and calls the user hooks of onFormSuccess and
    // onFormFailure for ajax success and error
    function submitForm() {
        var URL = $('form',$contentNode).attr('action'), 
        method = $('form',$contentNode).attr('method'),
        data = $('form',$contentNode).formSerialize();

        $.ajax({
            url: URL,
            type: method,
            data: data,
            success: function(msg) {
                // Doesn't work, but I would like it too
                //settings.onFormSuccess.call(msg, breakData(data) );
                // Does work
                settings.onFormSuccess.call(this);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                setings.onFormFailure.call(errorThrown);
            }
        });
        closeModel();
    }

Crescent Fre.. 5

请参阅call语法.第一个参数确定this回调函数本身的内容.它作为参数传递给回调函数.

要将参数传递给回调,请使用以下参数call:

settings.onFormSuccess.call(thisArg, msg, dataArray);

然后回调将接收两个参数,并this指向thisArg:

function successHandler(msg, dataArray) {}

与您的代码的另一个问题是价值this里面你的成功处理程序是没有意义的.从它看起来它只会指向window对象.所以你调用的回调也将运行this == window.



1> Crescent Fre..:

请参阅call语法.第一个参数确定this回调函数本身的内容.它作为参数传递给回调函数.

要将参数传递给回调,请使用以下参数call:

settings.onFormSuccess.call(thisArg, msg, dataArray);

然后回调将接收两个参数,并this指向thisArg:

function successHandler(msg, dataArray) {}

与您的代码的另一个问题是价值this里面你的成功处理程序是没有意义的.从它看起来它只会指向window对象.所以你调用的回调也将运行this == window.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有