0

我熟悉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 click 上运行并执行 som 工作人员。我相信现在我需要运行hideLoader方法(见上文),但我不明白如何 . 我应该尝试hideLoader在这个脚本中调用方法:

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

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

4

1 回答 1

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();
    }
},
于 2013-08-16T20:45:24.780 回答