获取并调用自定义对象方法

时间:2013-08-16 19:17:09

标签: jquery

我熟悉jquery,但不是那么先进。 我有网页,它创建一些jquery对象(CLButton)。这是完整的js代码(http://contactplus.sos-pharmacie-de-garde.com/js/sos.js)。 以下是具有自定义jquery CLButton方法的代码的一部分。我在这里

CLButton.prototype = {
        constructor: CLButton,
        ...                             
        hideLoader: function(){
            var $loader = this.getLoader();
            var $bg = $loader.find(".bg");
            $loader.fadeOut(150, function(){
                $bg.css({'width':'252px','height':'auto'});
            });
        },                      

...

在document.read中有以下代码:

// creates CLButton and shows some staff
$("#next2").CLButton({
    'delay'      : 3000,
    'formSubmit' : false,
    'txtWait'    : 'Chargement en cours ...'
  });

此代码在按钮#next2上运行,然后执行som staff。我相信现在我需要运行hideLoader方法(见上文),但我不明白如何。 我应该尝试在此脚本中调用hideLoader方法:

 $("#next2").click(function(){
   ... //HOW TO CALL hideLoader here?
 }

问题是 - 如何做到这一点?对象在document.ready中的click函数之外创建。所以我需要以某种方式访问​​此对象,然后调用上面定义的方法。怎么样?

1 个答案:

答案 0 :(得分:0)

来自链接代码:

    onClick : function(e){
        e.preventDefault();
        this.disable();
        setTimeout($.proxy(this, '_callback', 'onClick', e), this.settings.delay);
        return false;
    },

    _callback: function(callback, e){
        this.settings[callback].call(this, e);
        if (callback == 'onClick' && this.settings.formSubmit){
            this.canSubmitForm = true;
            this.$form.submit();
        }
    },

这似乎表明您可以将单击处理程序作为选项传递,例如

$("#next2").CLButton({
    'callback' : function () {
         // stuff to do onclick
     },
     // other options here
});

但是如果你想改变CLButton的来源,你可以这样做:

_callback: function(callback, e){
    this.hideLoader(); // add this call here
    this.settings[callback].call(this, e);
    if (callback == 'onClick' && this.settings.formSubmit){
        this.canSubmitForm = true;
        this.$form.submit();
    }
},