1

首先,代码可以正常工作,但在我看来并不理想。

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

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

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

$(function()){

  function bar() { .. }

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

  bar(); //'onload'
}

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

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

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

但这不起作用。

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

4

3 回答 3

0

您可以添加.click()尾随以触发加载:

$(".foo").on("click", function() {
 ..
}).click(); //trigger on load
于 2013-11-01T00:24:51.983 回答
0

试试这个可能对你有帮助。

$(function()){


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

  bar(); //'onload'
}

function bar() { .. }
于 2013-11-01T12:31:14.843 回答
0

@tymejV 的想法很接近,但我可能会产生一些不希望的副作用 - 例如,已经有界的点击事件。幸运的是,我们在 jQuery 中有“命名空间事件”,它解决了这个问题:

$(function()){
  $(".foo").on("click load.somenamespace", function() {
     ..
  }).trigger("load.somenamespace");
}
于 2014-09-04T20:35:58.967 回答