// 监听 click 事件jQuery('.tabs a').on('click', function() { // 执行某些操作,比如切换界面,加载内容等..});// 在最后一个 a 标签上触发 click 事件jQuery('.tabs a').last().trigger('click');上面的代码将会打开给定index的tab标签。 我完全理解开发者使用 trigger 来处理这些事情的原因,通常是因为要触发的函数在全局范围内不可用,而触发事件是很容易的,也总是可用的。 问题是,使用原生的事件名称来触发可能 ... 触发 ... 一些无法言说的伤。让我们来看看在网站的其他地方添加的内容:
// 监听 body 内部的所有 click 事件jQuery('body').on('click', 'a', function() { // 此处可以进行一些业务逻辑处理 ... // 满足条件(Condition met), 则进行另外一些操作! if(conditionMet) { // 刷新页面? // 打开子菜单? // 提交表单? // ... 灯灯蹬蹬,Intel }});
现在有一个问题 —— 选项卡单击事件可能被其他完全独立的部分监听着,这处理起来就比较麻烦。 呵呵,最好的解决方案是使用一个自定义的事件名称跟在原生事件后面:
// 监听 click 事件时,带上自定义的事件jQuery('.tabs a').on('click tabs-click', function() { // 切换 tab, 加载内容,等等等等 ...});// 在最后一个标签上触发 "假" 的事件jQuery('.tabs a').last().trigger('tabs-click');现在你的事件触发器将不再和页面上的其他监听器起冲突。 保守的开发人员对我说,你可能想要避免使用 trigger (其他工具库也是一样的),但好歹你也应该添加一个自定义事件名称!