我一直爱着jQuery bind。原因是它使我能够轻松访问事件 - 以及使功能可访问的统一方式。以下是示例:
$menu = $('<span id="menuid"></span>');
$menu.bind('populate', function() {
// put stuff in the menu
}
$menu.trigger('populate');
与此完全相同:
$menu = $('<span id="menuid"></span>');
var _populateMenu = function() {
// put stuff in the menu
}
_populateMenu();
但是我可以将所有绑定结合在一起,并且 - 如前所述 - 对'populate','place','hide','show'等做同样的事情。我已经编写了相当大的jQuery插件但绑定 - 并为速度和通话分析它。绑定方法比“正常”方式使用更多的时间和调用。
这样做的一个额外好处是我可以轻松地从任何地方触发内容。喜欢 这个:
$("#" + menuid).trigger('placement');
如果我想访问jquery-plugin中的函数,我需要将它分配给变量来执行此操作。
那么 - 这样做真的有什么方法吗?或者我应该将函数保留为函数并仅绑定实际事件(如show,hide,keyup等)?我发现这个东西非常强大。但我担心它有一个我没有看到的成本。
答案 0 :(得分:1)
这样做的好处是它可以解耦你独立的代码块,并且可以触发行为,而代码甚至不必知道特定页面上是否存在这样的行为。
正如您所说,这是一个成本,但根据您的应用程序,它可能是值得的。如果代码需要每个“keypress”事件调用数千和数千个时间的功能,那么可能这是一个坏主意。但是,在现代浏览器中,十二个或两个函数调用与事件触发器相比并不会增加太多时间。
我还会说,当有问题的功能与DOM无关时,那么使用jQuery事件系统将是一个相当奇怪的反模式,我会避免这种情况。