使用jQuery绑定“一切”?

时间:2011-06-06 14:11:37

标签: javascript jquery jquery-plugins javascript-events

我一直爱着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等)?我发现这个东西非常强大。但我担心它有一个我没有看到的成本。

1 个答案:

答案 0 :(得分:1)

这样做的好处是它可以解耦你独立的代码块,并且可以触发行为,而代码甚至不必知道特定页面上是否存在这样的行为。

正如您所说,这是一个成本,但根据您的应用程序,它可能是值得的。如果代码需要每个“keypress”事件调用数千和数千个时间的功能,那么可能这是一个坏主意。但是,在现代浏览器中,十二个或两个函数调用与事件触发器相比并不会增加太多时间。

我还会说,当有问题的功能与DOM无关时,那么使用jQuery事件系统将是一个相当奇怪的反模式,我会避免这种情况。