处理仅适用于特定内容的javascript事件
-
03-07-2019 - |
题
在尝试制作我的第一个大型javascript网络应用程序时,我无法从概念上理解我应该做些什么。
根据用户选择的标签,我在容器中显示不同的内容。内容不仅仅是文本,还使用不同的javascript函数和事件。我正在使用Yahoo! UI库的“TabView”实现,但应该处理此问题的方式可能适用于其他Tab方法。
我想做的事情基本上如下:
为每个标签创建单独的模块(例如MYAPP.modules.tabCalendar和MYAPP.modules.tabJournal)。当用户单击另一个选项卡(或使用浏览器按钮导航到上一个选项卡状态)时,我可以调用MYAPP.modules [oldModule] .disable()和MYAPP.modules [newModules] .enable()。这些函数将订阅或取消订阅其自定义事件(例如,附加到容器的常规单击处理程序)。
处理事件的另一种方法可能是拥有一个全局点击处理程序。如果单击位于容器内,则确定当前选择了哪个选项卡,并将单击事件发送到MYAPP.modules [currentTab] .onClick()。
或者,全局点击处理程序可以触发自页面加载以来模块已订阅的自定义事件,并且每个模块的onClick事件将运行并确定它们是否应该执行任何操作。
似乎有很多选择,但我一直无法找到资源来讨论做这样事情的最佳方法。我在正确的道路上吗?我该怎么办呢?
解决方案
使用已经内置在TabView中的事件将JS排队等待。
http://developer.yahoo.com/yui/tabview/#handlingevents一>
对于标签更改,您将被告知选择了上一个/下一个标签,这些标签应该足以让您的JS了解它应该做什么。如果你想编写一个翻译层来查看事件并根据它做一些很好的事情,但这并不是绝对必要的。
其他提示
我对这个问题有点模糊。
- 是的,您应该模块化您的代码。
- 让每个模块在各自容器中的元素上设置事件处理程序。 醇>
就是这样。 YUI TabView处理选项卡切换,因此您无需启用/禁用任何内容。