调用函数

时间:2017-02-07 19:53:54

标签: javascript jquery function joomla timeout

我被迫停止工作。我已经有了一个工作代码,但在我看来这是错误的方法。

工作代码,但可能不是最好的:

/* Autosave */
// On load we hide all autosave messages.
$('.jform_params_autosave-cg').hide();
// Below is the function that handles the autosave.
$.fn.autoSave = function(){
  // We remove the autosave message from it's place defined by the xml and add it to the system message container.
  var autosavemessage = $('.jform_params_autosave-cg');
  autosavemessage.detach();
  autosavemessage.appendTo('#system-message-container');
  // Now we show the message.
  $('.jform_params_autosave-cg').show();
  // Here we save the extension.
  Joomla.submitbutton('module.apply');
}
// On change of the below elements we run the autosave.
//------------------------------------------//
// DUPLICATE AUTOSAVE FUNCTION BELOW
//------------------------------------------//
// Autosave: Theme Selection
$("#jform_params_theme_selection").change(function() {
  $.fn.autoSave();
});
// Autosave: Add Content
$("a.group-add.btn.btn-mini.button.btn-success").click(function() {
  setTimeout(
    function()
    {
      $.fn.autoSave();
    }, 5000);
});

功能:

$.fn.autoSave = function(){
  // We remove the autosave message from it's place defined by the xml and add it to the system message container.
  var autosavemessage = $('.jform_params_autosave-cg');
  autosavemessage.detach();
  autosavemessage.appendTo('#system-message-container');
  // Now we show the message.
  $('.jform_params_autosave-cg').show();
  // Here we save the extension.
  Joomla.submitbutton('module.apply');
}

函数调用

$("#jform_params_theme_selection").change(function() {
  $.fn.autoSave();
});

带超时的函数调用

$("a.group-add.btn.btn-mini.button.btn-success").click(function() {
  setTimeout(
    function()
    {
      $.fn.autoSave();
    }, 5000);
});

我想要实现什么

  1. 在函数内部设置超时。
  2. 定义调用函数时的超时。
  3. 定义我的意思是称之为$.fn.autoSave(5000);$.fn.autoSave().timeout(500);

    我一直试图获得一个有效的代码,但到目前为止还没有运气。每当我获得更多成功或要添加的细节时,都会不断更新这篇文章。

    感谢大家的帮助。

    任何与现有SO问题的链接也将受到赞赏,因为我可能在Google上搜索错误的关键词。

1 个答案:

答案 0 :(得分:2)

这是你的功能的修改版本。现在它有可选的超时参数。您可以像

一样使用它

$('selector').autoSave(5000)$('selector').autoSave()

$.fn.autoSave = function(timeout) {
  function doIt() {
    // We remove the autosave message from it's place defined by the xml and add it to the system message container.
    var autosavemessage = $('.jform_params_autosave-cg');
    autosavemessage.detach();
    autosavemessage.appendTo('#system-message-container');
    // Now we show the message.
    $('.jform_params_autosave-cg').show();
    // Here we save the extension.
    Joomla.submitbutton('module.apply');
    return this;
  }
  timeout = Number(timeout) || 0;
  var f = doIt.bind(this);
  if(timeout < 0) return f();
  setTimeout(f, timeout);
  return this;
}