事件处理程序未在指定事件上触发
Event handler not triggered on specified event
我正在实现一个具有复杂数据字段依赖关系的用户输入表单。例如,收集用户地址的表单:国家、州和街道地址。
当country字段发生变化时,我想触发state字段的清理过程。当州改变时,我要干净的街道地址字段。它们像依赖树结构一样链接在一起。
这是我在JSFiddle中的设置。它包含5个输入框。它们的依赖树是用HTML5数据属性实现的。
我想将函数cleanSubtree
绑定到每个输入框的change
事件。因此,每当检测到更改时,该函数将清除所有相关字段。如下:
$('input').on('change',function cleanSubtreeHandlerWrapper(e){
var inputElem = $(this);
return function(){
e.stopPropagation();
cleanSubtree(inputElem);
};
});
但是,当我更改任何输入框的文本时,有界函数似乎没有执行。但是如果我直接调用它们,函数将正常工作,例如cleanSubtree($('#i3'));
。
请问cleanSubtree
功能不触发的原因是什么?
(PS:我使用jQuery 2.1.4和Chrome 51.0.2704.103 m)EDIT:修复方法是更改包装器功能。以前的版本没有调用包装器函数。
$('input').on('change',
function cleanSubtreeHandlerWrapper(e){ //** seems not triggered
e.stopPropagation();
cleanSubtree($(this));
});
change:
$('input').on('change',function processNodeHandlerWrapper(e){
var inputElem = $(this);
return function(){
e.stopPropagation();
cleanSubtree(inputElem);
};
});
:
<script>
$('input').on('change',function processNodeHandlerWrapper(e){
var inputElem = $(this);
e.stopPropagation();
cleanSubtree(inputElem);
})
</script>
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- 提示使用服务器端事件处理程序激活JavaScript
- 将事件处理程序绑定到任何可能的事件
- 正在将事件处理程序添加到不存在的类
- 在循环中附加事件处理程序时出现浏览器性能问题
- 在同一个javascript事件处理程序中调用不同的函数
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- React应用程序:道具在下一个事件后更新
- 检查事件处理程序参数
- 实现延迟的jquery更改事件处理程序
- 平均值.on(事件[,选择器][,数据],处理程序)
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 如何使jQuery的“bind”或“on”事件处理程序幂等
- 如何在Win8Metro应用程序的Javascript代码中捕获自己的C#事件
- 带有参数的Javascript事件处理程序
- Jquery事件处理程序仅适用于匿名函数
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 鼠标事件在OpenLaszlo应用程序中不起作用
- 如何在jQuery事件处理程序中存储和重用超时
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文