jQuery:匿名函数onclick和onready

时间:2013-11-01 00:20:38

标签: jquery

首先,代码正在运行,但在我看来并不理想。

我喜欢Javascript中的匿名函数。所以我在注册onclick处理程序时可以使用匿名函数:

$(function()){
  $(".foo").on("click", function() {
     ..
  });
}

但有时,我意识到我还需要调用该函数onReady。所以,我可以将代码转换为:

$(function()){

  function bar() { .. }

  $(".foo").on("click", bar);

  bar(); //'onload'
}

但那是很多工作! (懒惰是程序员的一个很好的特征)。我必须创建一个非匿名函数,更改onclick registrion等。是否可以保留匿名函数?

在理想的情况下,我有类似的东西:

$(function()){
  $(".foo").on("click onDomLoaded", function() {
     ..
  });
}

但那不起作用。

(我看到的唯一选择是扩展'on'功能,但这看起来很难看)

3 个答案:

答案 0 :(得分:0)

您可以添加.click()跟踪以在加载时触发:

$(".foo").on("click", function() {
 ..
}).click(); //trigger on load

答案 1 :(得分:0)

试试这可能对你有帮助。

$(function()){


  $(".foo").on("click", function(){ bar();});

  bar(); //'onload'
}

function bar() { .. }

答案 2 :(得分:0)

@tymejV的想法很接近,但我可能会有一些不受欢迎的副作用 - 例如,已经有限的点击事件。幸运的是,我们在jQuery中有'namespaced events'来解决问题:

$(function()){
  $(".foo").on("click load.somenamespace", function() {
     ..
  }).trigger("load.somenamespace");
}