【发布时间】:2011-06-06 14:11:36
【问题描述】:
我已经爱上了 jQuery 绑定。原因是它使我可以轻松访问事件 - 以及使功能可访问的统一方式。以下是示例:
$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();
但是我可以将所有绑定串在一起,并且 - 如前所述 - 对“填充”、“放置”、“隐藏”、“显示”等执行相同操作。我编写了相当大的 jQuery 插件,但什么也没有但绑定 - 并分析它的速度和呼叫。与“正常”方式相比,bind 方法使用的时间和调用稍多。
这样做的另一个好处是我可以轻松地从任何地方触发东西。喜欢 这个:
$("#" + menuid).trigger('placement');
如果我想访问 jQuery 插件中的函数,我需要将其分配给一个变量来执行此操作。
那么 - 这样做真的有什么办法吗?或者我应该将函数保留为函数,并且只绑定实际事件(如显示、隐藏、keyup 等)?我只是觉得这个东西非常强大。但我担心它的代价是我没有看到的。
【问题讨论】:
-
能够“从任何地方触发东西”并不是一件好事。这将变成一场调试噩梦。
-
听起来你爱上了 OOP,而不仅仅是 jquery。您的问题更语义化,还是您在问功能限制?
-
@meagar 我的经验是,如果仔细管理,它不会有任何特别讨厌的架构问题,事实上,通过将一些管理委派给经过充分测试的 jQuery 内部,它实际上 减少出现错误的机会。
-
@Mikhail 我想知道这个功能,真的。如果这样做有任何强烈的限制。这很方便。能够这样写:
$menu.trigger('populate').trigger('position').trigger('show');真的很有趣也很容易。我通过很好地控制我的 console.log 消息解决了调试问题。老实说,我在调试方面没有任何问题。
标签: javascript jquery jquery-plugins jquery-events