我熟悉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
函数之外创建。所以我需要以某种方式访问此对象,然后调用上面定义的方法。怎么样?
答案 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();
}
},