我在document
上设置了一个事件处理程序,监听submit
和change
个事件,委托给页面上的任何form
个元素。想法是在输入被更改时更新服务器(因为事件冒泡到表单),同时还允许提交整个表单。对于需要特殊处理的输入,我有一些覆盖,这非常有用(因为它们位于代码中,我可以使用.stopImmediatePropagation()
阻止主事件处理程序 - 所有这些处理程序都在{ {1}}。)
我现在要做的是拦截特定输入上的document
事件,然后不是阻止,我想重新触发主处理程序,传入一些额外的数据(使用jQuery的{{ 1}}语法。)
举一个简化的例子:http://jsfiddle.net/rrEmq/3/
我的目标是:
第三项是我最初的方法,我知道它会完成工作,但我很想找到一种方法来解决这个问题,而无需重写主处理程序。显然,真正的问题在于,因为所有内容都委托给同一个元素,而且由于我使用change
,所以我不能简单地在DOM树中触发更高的处理程序。
答案 0 :(得分:2)
创建custom event并使用额外数据触发
而不是
$(this).trigger("change", data);
呼叫
$(this).trigger("changemodified", data);
并为此活动创建处理程序。
您可以重复使用处理程序
var handleChange = function(e) { };
$("something").on("change", handleChange);
$("something").on("changemodified", handleChange);