【问题标题】:why is there a call to a function in a variable in a jquery plugin为什么在 jquery 插件的变量中调用函数
【发布时间】:2010-06-22 18:31:05
【问题描述】:

我想尝试了解这些构造的用途 因为我没有。

如果我在插件中看到这个

function configuration(user_settings) {
    //Override the default settings with the user settings
 defaults = { 
 time_in_seconds: 3600,
 time_format: 'ss',
 tick: function(timer, time_in_seconds, formatted_time) {},
 buzzer: function(timer) {},
 autostart: true
  };
  return $.extend(defaults, user_settings);

}

在插件中调用刻度并设置新值 但是当我将这些行注释掉时,一切仍然有效。

它背后的总体思路是什么。 看了github page,没有解释

编辑

如果插件迭代,就是设置tick的参数

settings.tick(timer, current_time, formatted_time);

我怎样才能为tick设置一个user_setting,仍然可以使用这些参数?

换句话说,在那些执行 {} 括号之间插入一些东西。

编辑 我做了更多的测试,显然可以随时传递任意数量的参数。只是通过类似的东西

$("#countdown_update").createTimer({time_in_seconds: ( delay? delay/1000 : minTimeBetweenUpdates/1000 ),
        tick:function(one,two){$('#test').html('test '+one+two);}});

它将在输出中为您提供计时器对象和 time_in_seconds

谢谢,理查德

【问题讨论】:

  • 您要注释掉哪些行?您为使用它而编写的代码是什么样的?
  • 带有勾号的那些。 $("#countdown_update").createTimer({time_in_seconds: 30});

标签: jquery plugins function


【解决方案1】:

它很可能仍然有效,因为插件已经在代码中分配了默认值。通过注释掉您的行,​​插件将恢复为默认配置。

【讨论】:

  • 好的,但您能否解释一下为什么这样做。它有什么用?
  • 默认值是为了方便。插件设计器不需要用户设置每个选项,而是默认一些常用选项的值。您可以随意覆盖它们。
【解决方案2】:

当您将其注释掉时,您正在删除“tick”函数的默认值。它可能仍然有效,因为代码足够聪明,如果函数没有值,就不会使用它。

tick 函数可能会在每次计时器迭代时被调用。此处显示的默认值是一个空函数,因此它不会执行任何操作,但您可以使用执行某些操作的函数覆盖 tick(例如,让它每次都弹出一个警报,只是为了查看它是否正常工作) .

【讨论】:

  • 那么,那些是回调函数?并且变量是在迭代中设置的。我可以理解。我如何在 { } 括号内给它一些事情做?因为我可以理解传递一个完整的语句,例如:function(){do something},但是我不能利用迭代中设置的变量?希望这是有道理的。
  • 您只需将键和值添加到以下内容: $("#countdown_update").createTimer({time_in_seconds: 30, tick: function(){ alert("HI!"); }) ;
  • 或者是它背后的想法是进行这样的用户设置 $("#countdown_update").createTimer({time_in_seconds: 30,tick:function(one,two,three{dosomething})} ) 其中参数只是假值,因为真正的值是像这样在迭代中设置的。->settings.tick(timer, current_time, formatted_time);
  • 感谢@Mervyn,但是当像作者那样写默认设置时,必须使用三个参数,对吗?因为在代码中更进一步,这个语句:settings.tick(timer, current_time, formatted_time);否则会导致错误,对吗?或者是否可以随时将任意数量的参数传递给变量中的函数,无论它们是否被声明? ——
  • 最简单的考虑方法是替换已经存在的函数。
【解决方案3】:

此代码使用 user_settings 扩展默认对象。因此 user_settings 将覆盖默认对象中任何类似名称的属性。但是,如果 user_settings 对象中不存在 defaults 中的任何属性,这些属性将被添加到 user_settings 对象中并返回给调用者(作为新对象)。

【讨论】:

  • 谢谢,我没有很好地解释自己。我了解设置变量,但我没有将刻度设置为 user_setting。你怎么设置的。为什么在变量中有一个函数?是不是某种回调。和蜂鸣器一样!
猜你喜欢
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多